zoukankan      html  css  js  c++  java
  • 3 ansible-playbook 条件语句-外部变量使用

    外部变量指的是从playbook文件之外获取的数值

    lookups file

    file是我们经常使用的一种lookups的方式,它的原理就是使用python的codecs.open打开文件然后把结果返回给变量,请看例子

    [root@LeoDevops playb]# cat lookups_file.yaml 
    - hosts: u12
      gather_facts: False
      vars: 
        contents: "{{ lookup('file','/etc/sysconfig/network') }}"
      tasks:
        - name: debug file lookup
          debug: msg="the content is {% for i in contents.split('
    ')  %} ,{{ i }} {% endfor  %} "
    

    执行结果如下:

    [root@LeoDevops playb]# ansible-playbook lookups_file.yaml 
    
    PLAY [u12] ************************************************************************************************************************************************************************************
    
    TASK [debug file lookup] **********************************************************************************************************************************************************************
    ok: [192.168.93.137] => {
        "msg": "the content is  ,NETWORKING=yes  ,HOSTNAME=LeoDevops  "
    }
    
    PLAY RECAP ************************************************************************************************************************************************************************************
    192.168.93.137             : ok=1    changed=0    unreachable=0    failed=0 
    

    lookup password

    对传入的内容加密处理

    [root@LeoDevops playb]# cat lookup_passwd.yaml 
    - hosts: u12
      gather_facts: False
      vars: 
        contents: "{{ lookup('password','ansible_book')  }}"
      tasks:
        - name: debug lookups
          debug: msg="true contents is {{ contents }}"
    

    lookups pipe

    pipe lookups的实现原理很简单,其实调用的是subprocess.Popen执行的

    [root@LeoDevops playb]# cat  lookup_pipe.yaml 
    - hosts: u12
      gather_facts: False
      vars: 
        contents: "{{ lookup('pipe','date +%F') }}"
      tasks:
        - name: debug lookups
          debug: msg="the content is {% for i in contents.split('
    ')  %} -- {{ i }} {% endfor  %}"
    

    lookups redis_kv

    redis_kv是从redis数据库中get数据,依赖于python的redis库,

    [root@LeoDevops playb]# cat redis_k.yaml
    - hosts: u12
      gather_facts: False
      vars:
        contents: "{{ lookup('redis_kv','redis://localhost:6379,resource_usage_rate') }}"
      tasks:
        - name: get_redis_k
          debug: msg="the content is {% for i in contents.split('
    ') %} --->{{ i }}{% endfor %}"
    

    lookups template

    template 跟file方式有点类似,都是读取文件,但是template在读取文件之前需要把jinja模板渲染完成后再读取,

    [root@LeoDevops playb]# cat lookup_template.yaml 
    - hosts: u12
      gather_facts: True
      vars:
        contents: "{ lookup('template','./hehe.conf'  }"
      tasks:
        - name: debug lookup
          #debug: msg="teht contents is {% for i in contents.split('
    ') %} -->{{ i }} {% endfor  %}"     
          debug: msg="teht contents is {{ contents }}" 
    
    [root@LeoDevops playb]# cat hehe.conf 
    work_process: {{ ansible_processor_cores  }}
    ip_addr: {{ ansible_default_ipv4.address  }}      
    
  • 相关阅读:
    一个很诡异的javascript问题
    记录我开发鞋服行业供应链软件的历程<设计业务层>
    为什么要自已写报表中心
    关于系统的性能
    “时间”都去哪儿了?性能调优分析方法与案例详解
    工程师推荐软件
    终于有人把云计算、大数据和人工智能讲明白了!
    C# Dictionary 泛型字典集合(转)
    DEV中的TreeList控件应用的一个小效果实现
    推荐VS2008插件CodeRush Xpress for C#
  • 原文地址:https://www.cnblogs.com/liaojiafa/p/9353771.html
Copyright © 2011-2022 走看看