Ansible:基于变量值跳过该步骤

时间:2017-02-16 08:55:04

标签: ansible yaml ansible-2.x

如果在变量yml文件中将Ansible变量设置为https: off,则应跳过以下代码。

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

当我播放此Ansible 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 个答案:

答案 0 :(得分:1)

两件事:

    YAML中的
  • off是一个布尔值(falseno的同义词),所以如果保留https定义,那就足够了使用以下条件:

    when: not https
    
  • 如果您将https更改为字符串,即使用:

    https: "off"
    

    然后条件可能是:

    when: https == "off"