博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3 ansible-playbook 条件语句-外部变量使用
阅读量:7113 次
发布时间:2019-06-28

本文共 2708 字,大约阅读时间需要 9 分钟。

外部变量指的是从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 }}

转载地址:http://uoghl.baihongyu.com/

你可能感兴趣的文章
正则表达式常用函数:匹配/查找替换/分割等
查看>>
Python科学计算 第二版
查看>>
【讲古堂】表达式求值
查看>>
[翻译]在objective c创建自定义collection view样式
查看>>
iOS去除数组中重复数据的几种方法
查看>>
存储知识整理
查看>>
C Primer Plus 第9章 函数 9.1 函数概述
查看>>
Windows线程同步【2】临界区
查看>>
[转][开心学php100天]第三天:不羁的PHP文件操作
查看>>
将一段时间内没有数据的点用0填充
查看>>
c++构造函数详解
查看>>
ContentValues类和 Hashtable比较
查看>>
Php对python模块的调用
查看>>
composer 安装
查看>>
org.apache.spark.streaming.dstream.MappedDStream@5a69b104 has not been initialized
查看>>
linux shell 中判断字符串为空的正确方法
查看>>
致敬Linux系统
查看>>
DevSecOps 运维模式中的安全性
查看>>
Android 动画效果(一)
查看>>
node pm2 错误 配置
查看>>