2016-11-10 3 views
0

을 사용하여 SELinux이 활성화되어 있는지 (적용으로 설정되어 있는지) 확인하고 그렇지 않은 경우 사용하도록 설정하려고합니다. SELinux을 활성화하는 playSELinux이 비활성화 된 경우에만 호출해야합니다.다른 재생 출력을 기반으로 다른 '재생'을 호출하십시오 - 가능

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"