Назад | Перейти на главную страницу

Возможный сбой при проверке условий для роли. Какой правильный?

Я пытаюсь сделать расширенную версию вашего скрипта, в которой возможно выполнение роли на основе результата условия «когда». В моем сценарии 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