zoukankan      html  css  js  c++  java
  • ansible 使用记录

    变量渲染部分

    1. handler 的name中含变量,导致渲染时找不到这个handler
    # 错误的做法
    - name: restart redis_{{ redis.port }}
    
    # 正确的做法
    - name: restart redis
       supervisorctl:
         name: redis_{{ redis.port }}
         state: restarted
    
    1. "Missing end of comment tag"
      渲染bash时,出现错误 "msg": "AnsibleError: template error while templating string: Missing end of comment tag.
      最终发现{#和jinja中的语法comment tag相同,而且只有一半,导致无法渲染。
      if [[ ${#resources[@]} -gt 0 ]]
    

    处理办法:这部分原样保留就不会触发jinja的语法规则。

    {% raw %}
      if [[ ${#resources[@]} -gt 0 ]]
    {% endraw %}
    
    1. 现象:
      在主机inventory中定义了一个变量enable_fs=false,但是template中if enable_fs的判断一直是True。
      enable_fs: false放在group_vars,template中if的判断一直是False。
      最终找到的区别:
      变量定义在inventory的主机变量或组变量中,false会被当成字符串,故if为真,可以用 if enable_fs | bool来处理,逻辑就正常了;
      变量定义在group_vars中,false会被当False处理,故if为假。

    为了避免这个问题,可以使用if enable_fs | bool,无论变量定义在哪里都可以正常处理。

  • 相关阅读:
    第1次作业
    第0次作业
    总结报告
    第14、15周作业
    第七周作业
    第六周作业
    第四周作业
    第四次作业
    第三次作业
    2018第二次作业
  • 原文地址:https://www.cnblogs.com/hiyang/p/12631521.html
Copyright © 2011-2022 走看看