--- # Образ уже собран: простой валидатора — только stop + rm + run. - name: Copy the env file to the validator ansible.builtin.copy: src: "{{ local_env_file }}" dest: "{{ remote_env_file }}" owner: root group: root mode: "0600" no_log: true - name: Check whether the container exists ansible.builtin.command: "docker container inspect {{ container_name }}" register: container_exists changed_when: false failed_when: false - name: Stop the current container ansible.builtin.command: "docker stop -t {{ stop_timeout }} {{ container_name }}" when: container_exists.rc == 0 - name: Remove the current container ansible.builtin.command: "docker rm -f {{ container_name }}" when: container_exists.rc == 0 # --restart нужен: агент завершается, если регистрация в control-api не # удалась, и должен подняться снова. validator_id берётся из inventory # (validator_id) и перекрывает env-файл. - name: Start the new container ansible.builtin.command: argv: >- {{ ['docker', 'run', '-d', '--name', container_name, '--restart', restart_policy, '--platform', platform, '--env-file', remote_env_file, '-e', 'VALIDATOR_AGENT_VALIDATOR_ID=' ~ effective_validator_id, '--log-driver', 'json-file', '--log-opt', 'max-size=' ~ log_max_size, '--log-opt', 'max-file=' ~ log_max_file, '--label', 'git.rev=' ~ rev_after.stdout, '--label', 'deployed.by=ansible'] + (capabilities | map('regex_replace', '^(.*)$', '--cap-add=\1') | list) + [image_ref] }} register: started