• 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  }}      
    
  • 相关阅读:
    CSS简介
    jQuery学习笔记一
    JavaScript基础testDemo
    JavaScript知识点记录
    js实现404页面倒计时跳转 猫
    html5动画之等待加载动画 猫
    开发jquery插件小结 猫
    jquery做一个小的轮播插件有BUG,后续修改 猫
    js倒计时跳转jquery插件版 猫
    nodejs安装配置 猫
  • 原文地址:https://www.cnblogs.com/liaojiafa/p/9353771.html
Copyright © 2020-2023  润新知