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"