Ansible 调用另一个';播放';基于另一个播放列表的输出
我试图使用Ansible 调用另一个';播放';基于另一个播放列表的输出,ansible,ansible-playbook,selinux,Ansible,Ansible Playbook,Selinux,我试图使用Ansible检查SELinux是否已启用(设置为强制),如果未启用,则启用它。只有在禁用SELinux时,才能调用启用SELinux的play playbook看起来是这样的: - hosts: all # root should execute this. remote_user: root become: yes tasks: # Check if SELinux is enabled. - name: check if selinux is
Ansible
检查SELinux
是否已启用(设置为强制),如果未启用,则启用它。只有在禁用SELinux
时,才能调用启用SELinux
的play
playbook
看起来是这样的:
- hosts: all
# root should execute this.
remote_user: root
become: yes
tasks:
# Check if SELinux is enabled.
- name: check if selinux is enabled
tags: selinuxCheck
register: selinuxCheckOut
command: getenforce
- debug: var=selinuxCheckOut.stdout_lines
- name: enable selinux if not enabled already
tags: enableSELinux
selinux: policy=targeted state=enforcing
when: selinuxCheckOut.stdout_lines == "Enforcing"
- debug: var=enableSELinuxOut.stdout_lines
当我运行此命令时,任务enableSELinux
失败,原因是“条件检查失败”。输出为:
TASK [debug] *******************************************************************
task path: /root/ansible/playbooks/selinuxConfig.yml:24
ok: [localhost] => {
"selinuxCheckOut.stdout_lines": [
"Enforcing"
]
}
TASK [enable selinux if not enabled already] ***********************************
task path: /root/ansible/playbooks/selinuxConfig.yml:26
skipping: [localhost] => {"changed": false, "skip_reason": "Conditional check failed", "skipped": true}
我的问题:1.这是根据另一个播放的输出来执行播放的正确方法吗?
2.我怎样才能让它工作呢?你的剧本是正确的。但是标准行是一个列表。您必须比较该列表中的第一个元素。试试这个:
when: selinuxCheckOut.stdout_lines[0] == "Enforcing"