2017-09-26 1 views
0

나는 이런 플레이 북을 가지고있다.표현식의 값을 변수로 정의 할 수 있습니까?

- name: ensure crm service is exist 
    shell: crm resource status {{item.service}} 
    register: is_service_exist 
    with_items: "{{crm_services}}" 
    run_once: true 
    delegate_to: "{{controller_master}}" 
    when: crm_services is defined 
    ignore_errors: True 

    - name: msg 
    vars: 
     service_is_exist: var[{{is_service_exist.results[0].stderr.find('not found')}}==-1] 
    debug: msg={{service_is_exist}}] 

    - name: stop crm service 
    shell: crm resource stop {{item.service}} 
    with_items: "{{crm_services}}" 
    run_once: true 
    delegate_to: "{{controller_master}}" 
    when: crm_services is defined and is_service_exist.results[0].stderr.find('not found')==-1 

    - name: uninstall current rpm packages 
    shell: rpm -e --nodeps {{item.package}} 
    with_items: "{{packages}}" 
    ignore_errors: True 

crm_service가 있는지, crm_service가 있는지 알고 싶으면 서비스를 중지하고 현재 rpm 패키지를 제거하십시오. is_service_exist.results[0].stderr.find('not found')==-1은 읽기 쉽지 않으므로 변수로 표현식을 설정하고 싶을 수 있습니까?

var[{{is_service_exist.results[0].stderr.find('not found')}}==-1]을 시도하지만, 출력은 "MSG"처럼 "var에 [-1 == - 1]"

따라서 가변 같은 식의 값을 정의 ansible 수 있는가?

답변

0

일반적으로 각 register 다음에 set_fact을 사용하여 정크 데이터를 제거합니다.

- name: ensure crm service is exist 
    shell: crm resource status {{item.service}} 
    register: is_service_exist 
    with_items: "{{crm_services}}" 
    run_once: true 
    delegate_to: "{{controller_master}}" 
    when: crm_services is defined 
    ignore_errors: True 

- set_fact: 
    is_service_exists: "{{is_service_exist.results[0].stderr.find('not found') == -1}}" 

- name: stop crm service 
    shell: crm resource stop {{item.service}} 
    with_items: "{{crm_services}}" 
    run_once: true 
    delegate_to: "{{controller_master}}" 
    when: crm_services is defined and is_service_exist 
관련 문제