3 ansible-playbook 条件语句-外部变量使用
2018-07-23 11:29
585 查看
外部变量指的是从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('\n') %} ,{{ 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('\n') %} -- {{ 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('\n') %} --->{{ 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('\n') %} -->{{ 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 }}
相关文章推荐
- 2. ansible-playbook 条件语句-内部变量使用
- js在if else语句中var的变量在条件语句外可以使用吗?
- Ansible之 模板,条件测试,循环语句 使用
- MSSQL 定义变量及条件语句,循环语句,全局变量的使用
- SQL语句中使用变量作为条件。遇到NULL时怎么写
- ADO.NET select语句使用变量作为属性值的条件查询
- 实例学习ansible系列(14)playbook变量使用
- Ansible管理任务计划、安装rpm包管理服务、 playbook的使用循环条件判断handles
- vs2010 linq语法使用中如果用到外部定义的变量会报错 没有引用对象
- 3 - SQL Server 2008 之 使用SQL语句删除约束条件
- Sql语句中in(...)使用参数变量
- Java中使用异或语句实现两个变量的互换
- 多线程:条件变量使用的两个注意事项
- ansible使用playbook安装nginx
- python使用外部PY文件的变量
- ansible条件使用--实践
- 学习pthreads,使用条件变量进行多线程之间的同步
- SQL Server ->> 使用CROSS APPLY语句是遇到聚合函数中包含外部引用列时报错
- Puppet条件语句,class,module的使用
- 【原】模块间(dll, exe)使用导出变量、静态变量和外部变量的试验与结论