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  }}      
    
  • 相关阅读:
    BZOJ 5018 [Snoi2017]英雄联盟
    BZOJ 4945 [Noi2017]游戏
    BZOJ4942 [Noi2017]整数
    BZOJ 2427 [HAOI2010]软件安装
    BZOJ 4870 [Shoi2017]组合数问题
    THINKPHP 全局404
    PHP 万能查询代码
    xml Array 相互转化
    JS 倒计时计算
    PHP 多态
  • 原文地址:https://www.cnblogs.com/liaojiafa/p/9353771.html
Copyright © 2011-2022 走看看