Ansible 角色条件检查失败。正确的条件是什么?

Ansible 角色条件检查失败。正确的条件是什么?

我正在尝试编写您的脚本的高级版本,其中 ansible 根据“when”条件的结果运行角色。在我的场景中,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

你能给出什么建议吗?谢谢!

答案1

这可能只是一个问题,你的任务没有在角色之前运行。如果你真的需要做你正在做的事情,你可以使用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

相关内容