ansible playbook提供了使用自定义变量的功能,但当变量内容庞大或复杂时,无论是在playbook中通过vars定义,还是在单独的变量文件中定义,都会导致可读性降低,且不够灵活。
利用lookup可以解决这些问题,lookup不仅能从Ansible管理节点上的文件系统读取文件内容到变量中,还可以从配置的数据库中读取内容。
lookup使用案例
读取Ansible管理节点上的文件内容
通过lookup可以读取管理节点上的/root/testfile文件内容,并将其赋值给contents变量。
运行结果:


上述示例中,contents: "{{ lookup('file','/root/testfile') }}"使用了file类型的lookup,这是最简单的lookup用法。
生成随机密码
password lookup可以生成随机密码,并将密码写入指定的文件中。以下示例展示了如何为MySQL用户bob创建随机密码,并将密码写入管理节点的bob-password.txt文件中:
- hosts: all remote_user: root tasks: - name: create deploy mysql user mysql_user: name: bob password: "{{ lookup('password', 'bob-password.txt') }}" priv: '*.*:ALL' state: present
读取环境变量
env类型的lookup可以读取Linux系统上的环境变量。
- hosts: all remote_user: root tasks: - debug: msg: "{{ lookup('env','HOME') }} is $HOME result"

读取Linux命令的执行结果
pipe类型的lookup可以将Linux命令的执行结果读取到Ansible中:
- hosts: all remote_user: root tasks: - debug: msg: "{{ lookup('pipe','date') }} is the raw result of running this command"
运行结果:

读取配置文件
冠龙科技手机企业网站管理系统2016
冠龙科技手机企业网站管理系统是基于ASP+ACCESS技术开发的电子商务平台,属于全自动化、全智能的在线方式管理、维护、更新的网站管理系统。此系统直接上传到你的网站空间就可以使用了。完全后台操作。后台路径:/admin后台用户及密码均为 admin更新日志:1、增加在线客服系统支持网页在线客服及QQ旺旺等2、修改产品展示的排序错误3、增加了后台修改前台图片的功能4、网站LOGO及版权信息后台自定
0 查看详情
lookup支持读取两种类型的配置文件:ini和Java的Properties。默认情况下,ini类型的lookup读取配置文件。
假设有以下ini类型的配置文件:

运行结果:

读取CSV文件的指定单元
csvfile可以从.csv文件中读取特定条目。假设我们有一个名为users.csv的文件:
username,emaillorin,lorin@test.comjohn,john@example.comsue,sue@exmaple.com
以下是提取sue的电子邮件地址的示例:
- name: get sue's email debug: msg: "{{ lookup('csvfile', 'sue file=users.csv delimiter=, col=1') }}"
向插件传递了四个参数:sue, file=users.csv, delimiter=, col=1。参数说明如下:
第一个参数指定一个名字,该名字必须出现在其所在行的第0列。如果名字在文件中多次出现,则匹配第一次出现的结果。第二个参数指定csv文件的文件名。第三个参数指定csv文件中条目的分隔符。第四个参数指定要取得哪一列的值,这一列正是第一个参数所在行的那一列的值。
fileansible.csv要加载的文件名称col1要输出的列,索引从0开始delimiterTAB文件的分隔符defaultempty string如果key不在csv文件中,则为默认返回值encodingutf-8使用的CSV文件的编码(字符集)(added in version 2.1)
读取DNS解析的值
dig类型的lookup可以向DNS服务器查询指定域名的DNS记录,包括正向查询和反向查询。
- debug: msg: "The IPv4 address for example.com. is {{ lookup('dig', 'example.com.') }}"- debug: msg: "The TXT record for example.org. is {{ lookup('dig', 'example.org.', 'qtype=TXT') }}"- debug: msg: "The TXT record for example.org. is {{ lookup('dig', 'example.org./TXT') }}"
今天我们先介绍到这里,未完待续!
往期精选
手把手教你搭建MySQL主从经典架构搭建Amoeba实现MySQL主从数据库读写分离高可用篇之Keepalived (HAProxy+keepalived 搭建高可用负载均衡集群)HAProxy负载均衡器用法详解Linux 集群总结 + LVS(负载均衡器)原理及配置Nginx可以做什么?看完这篇你就懂了!
参考资料:
Ansible快速入门, 技术原理与实战。https://www.php.cn/link/29c4f178686891b4988c32f722acec62
希望此文对大家有所帮助,也希望大家持续关注转载。关注公众号获取相关资料请typescript,springcloud,springboot,nodejs,nginx,mq,javaweb,java并发实战,java并发高级进阶,实战java并发,极客时间dubbo,kafka,java面试题,ES,zookeeper,java入门到精通,区块链,java优质视频,大数据,kotlin,瞬间之美,HTML与CSS,深入体验java开发,web开发CSS系列,javaweb开发详解,springmvc,java并发编程,spring源码,python,go,redis,docker,即获取相关资料。回复001,获取价值1w的课程视频,需要其他视频可以联系小编。
以上就是自动化运维 | Ansible lookup的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/736532.html
微信扫一扫
支付宝扫一扫