我正在尝试编写您的脚本的高级版本,其中 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