2017-02-16 3 views
0

Следующий код должен пропустить, если переменная Ansible установлена ​​на https: off в файле переменных yml.Ansible: пропустите шаг, основанный на переменном значении

default_setup.yml:

# Other info 
ansible_cache_dir: /var/cache/ansible 
https: off 

provision.yml:

--- 
- hosts: webclient 
    vars_files: 
    - default_setup.yml 

- name: Update server.xml tomcat https conf 
    template: 
     src: conf_files/tomcat_server.xml 
     dest: /opt/tomcat/apache-tomcat-{{ tomcat_ver }}/conf/server.xml 
    become: true 
    when: "{{ https }}" == "on" 
    notify: restart tomcat 

Когда я играю эту анзибль provision.yml получаю следующее сообщение об ошибке, даже если я добавил цитату ("")

ERROR! Syntax Error while loading YAML. 


    The error appears to have been in '/home/centos/check-tomcat/roles/nginx/tasks/main.yml': line 24, column 23, but maybe elsewhere in the file depending on the exact syntax problem. 

The offending line appears to be: 

    become: true 
    when: "{{ https }}" == "on" 
       ^here 
We could be wrong, but this one looks like it might be an issue with 
missing quotes. Always quote template expression brackets when they 
start a value. For instance: 

     with_items: 
     - {{ foo }} 

    Should be written as: 

     with_items: 
     - "{{ foo }}" 

ответ

1

Две вещи:

  • off в YAML является логическим значением (синоним false и no), так что если вы оставите https определения как есть, достаточно использовать следующее условие:

    when: not https 
    
  • если вы «d изменить https в строку, то есть с:

    https: "off" 
    

    то условие может быть:

    when: https == "off" 
    
Смежные вопросы