Я пытаюсь сделать расширенную версию вашего скрипта, в которой возможно выполнение роли на основе результата условия «когда». В моем сценарии ansible подключается как root, создает пользователя ansible_bot, предоставляет ему привилегии и запрещает доступ к root.
Все это работает при первом запуске, но не работает при втором запуске, потому что ansible не может подключиться как root на первом этапе.
Я пытаюсь пропустить этот шаг, используя следующую логику, но он возвращает ошибку «ошибка при оценке условия: root_connection.rc == 0».
- hosts: ansible-test
gather_facts: false
vars:
- ansible_ssh_user: "{{ initial_ssh_user }}"
tasks:
- name: Test SSH connection for {{ initial_ssh_user }}
local_action: shell ssh {{ initial_ssh_user }}@{{ inventory_hostname }} exit
register: root_connection
ignore_errors: True
roles:
- { role: add-ansible-bot, when: root_connection.rc == 0 }
- hosts: ansible-test
sudo: yes
roles:
- common
Вы можете что-нибудь посоветовать? Спасибо!
Вероятно, это просто проблема, из-за которой ваша задача не запускается перед ролью. Если вам действительно нужно делать то, что вы делаете, вы можете использовать pre_task:
:
- hosts: ansible-test
gather_facts: false
vars:
- ansible_ssh_user: "{{ initial_ssh_user }}"
pre_tasks:
- name: Test SSH connection for {{ initial_ssh_user }}
local_action: shell ssh {{ initial_ssh_user }}@{{ inventory_hostname }} exit
register: root_connection
ignore_errors: True
roles:
- role: add-ansible-bot
when: root_connection.rc == 0