果冻想
认真玩技术的地方

Ansible lookup插件使用总结

Ansible是一个系列文章,我会尽量以通俗易懂、诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些。
Ansible系列博文直达链接:Ansible入门系列

前言

在这篇《Ansible Playbook中的变量与引用》这篇文章中,总结了变量的定义,但是在实际工作中,当定义的变量很多的时候,或者很复杂的时候,不管是哪种方式都不好管理,也不够灵活。好了,有了这些问题,我们就来看看这篇文章讲到的这个lookup

借助lookup插件,我们可以从外部数据拉取信息,比如数据库读取信息、配置文件读取信息等等,接下来就总结一下lookup插件的各种使用。

读取外部文件数据

Ansible可以通过file方式,将文件数据读取出来赋值给变量。现在有这样的一个文件,内容如下:

{
    "website":"www.jellythink.com",
    "author":"Yanggd"
}

我们现在通过lookup的方式读取这个文件的内容:

---

- hosts: '192.168.5.3'
  gather_facts: False
  vars:
    contents: "{{lookup('file', '/home/yanggd/ansible/yaml/vars/vars.json')}}"
  tasks:
    - name: lookup file
      debug: msg="website is {{contents.website}}; author is {{contents.author}}"

这种通过lookup的方式和vars_files的方式很类似,并没有体现出lookup方式的优势,请各位继续看,下面的方式就比较好用了。

读取Redis缓存数据

通过redis_kv从Redis数据库中获取数据,我们先要安装python-redis库。

---

- hosts: '192.168.5.3'
  gather_facts: False
  vars:
    redisValue: "{{lookup('redis_kv', 'redis://127.0.0.1:6379, website')}}"
  tasks:
    - name: redis_kv
      debug: msg="{{redisValue}}"

读取环境变量数据

env类型的lookup可以读取Linux上的环境变量:

---

- hosts: '192.168.5.3'
  gather_facts: False
  vars:
    pathValue: "{{lookup('env', 'PATH')}}"
  tasks:
    - name: pipe
      debug: msg="{{pathValue}}"

上面代码将读取环境变量中的PATH的值,并赋值给pathValue变量。

读取Linux命令执行结果数据

pipe类型的lookup可以将Linux上命令的执行结果读取到Ansible中:

---

- hosts: '192.168.5.3'
  gather_facts: False
  vars:
    pipeValue: "{{lookup('pipe', 'date')}}"
  tasks:
    - name: pipe
      debug: msg="{{pipeValue}}"

上面代码将date命令的执行结果赋值给pipeValue变量。

读取配置文件数据

lookup可以读取ini和Java properties两种类型的配置文件。现在有config.ini和config.properties两个配置文件。

config.ini内容:

[info]
website=www.jellythink.com
author=Yanggd

config.properties内容:

info.website=www.jellythink.com
info.author=Yanggd

先看看怎么读取ini配置文件:

---

- hosts: '192.168.5.3'
  gather_facts: False
  vars:
    iniValue: "{{lookup('ini', 'website section=info file=/home/yanggd/ansible/yaml/vars/info.ini')}}"
  tasks:
    - name: ini
      debug: msg="{{iniValue}}"

在看看怎么读取properties配置文件:

---

- hosts: '192.168.5.3'
  gather_facts: False
  vars:
    propertiesValue: "{{lookup('ini', 'info.website type=properties file=/home/yanggd/ansible/yaml/vars/info.properties')}}"
  tasks:
    - name: ini
      debug: msg="{{propertiesValue}}"

读取properties时,需要说明type为properties。

总结

上面总结那么多关于lookup插件的内容,这些读取数据的方式在我们今后的工作中会经常用到的,建议把上面的代码在自己的测试环境都实现一遍,让自己更熟悉。最后,如果觉的还不错,可以点击下方的“打赏”哦。

果冻想,认真玩技术的地方。

2020年5月24日,于内蒙古呼和浩特。

赞(0) 打赏
未经允许不得转载:果冻想 » Ansible lookup插件使用总结
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

玩技术,我们是认真的

联系我们关于果冻

感谢支持果冻想

支付宝扫一扫打赏

微信扫一扫打赏