2016-11-10 7 views
0

を使用してSELinuxが有効になっているかどうかをチェックしていない場合は有効にしています。 SELinuxを有効にするplayは、SELinuxが無効の場合にのみ呼び出さなければなりません。別のプレイの出力に基づいて別のプレイを呼び出す - 可能

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.これを動作させるにはどうすればよいですか?

答えて

1

あなたのプレイブックは正しいです。しかしstdout_linesはリストです。そのリストの最初の要素を比較する必要があります。試してみてください:

when: selinuxCheckOut.stdout_lines[0] == "Enforcing" 
関連する問題