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

3 ansible-playbook 条件语句-外部变量使用的更多相关文章

  1. Ansible的条件语句

    此篇主要讲述的ansible的condition,主要是用条件进行一些判断,此篇为官方文档的翻译,没有进行相关的测试,后续会写入相关的测试. Ansible的条件语句 1.    前言 在有的时候pl ...

  2. ansible之条件语句when

    注册变量: 变量的另一个用途是将一条命令的运行结果保存到变量中,供后面的playbook使用.例如: - hosts: webservers tasks: - shell: /usr/bin/foo ...

  3. ansible 之条件语句 when

    注册变量: 变量的另一个用途是将一条命令的运行结果保存到变量中,供后面的playbook使用.例如: - hosts: webservers tasks: - shell: /usr/bin/foo ...

  4. Ansible14:Playbook条件语句

    目录 简介 when关键字 1. when基本使用 2. 比较运算符 3. 逻辑运算符 条件判断与tests 判断变量 判断执行结果 判断路径 判断字符串 判断整除 其他tests 条件判断与bloc ...

  5. 2. ansible-playbook 条件语句-内部变量使用

    内部变量指的是把变量定义在playbook里面或者是执行结果作为变量 循环语句-标准Loops [root@LeoDevops playb]# cat p_loop.yaml - hosts: u12 ...

  6. Ansible Playbook handlers 语句

    handlers 用法如下,表示当 tasks 执行成功之后再执行 handlers,相当于 shell 中的 && 用法,如果 tasks 执行失败是不会执行 handlers 语句 ...

  7. ansible playbook详解

    ansible playbook是由yml语法书写,结构清晰,可读性强,所以必须掌握yml基础语法 语法 描述 缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用tabs键 ...

  8. Linux就该这么学--Shell脚本条件语句(二)

    1.for条件语句 先读取多个不同的变量值,然后逐一执行同一组命令. 从列表文件中读取主机地址,逐个测试是否在线. 从ipadds.txt中读取主机地址后赋值给HLIST变量后逐个ping列表中的主机 ...

  9. Azure Terraform(十)利用 Azure DevOps 的条件语句选择发布环境

    一,引言 之前我讲过的所有的案例中,都是将整个Azure Resource 部署到同一个订阅下,没有做到灵活的在 Azure Pipeline 在运行前选择需要部署的环境.在实际的项目开发中,我们也会 ...

随机推荐

  1. 考前停课集训 Day7 嘞

    Day7 正如一个大佬提醒的那样,棕名是会被嘲讽的 果然…… 在洛谷里…… 算了. 不必在意. 马上就要退役了. NOIP,开始的地方,也是结束的地方. 如果一群OIer比你小 还会嘲讽你, 你就该退 ...

  2. MySQL(四)

    分组 按照字段分组,表示此字段相同的数据会被放到一个组中 分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中 可以对分组后的数据进行统计,做聚合运算 语法: select 列1,列2 ...

  3. C# StreamReader.ReadLine统计行数的问题

    要实现一个功能: 从 lua 文件中提取字符串放到 excel 中,再将 excel 给海外同事,翻译完成后,用翻译的文本替换相应中文. 整个功能并不复杂,要点有二点: 1.提取字符串,一行中文如&q ...

  4. [Docker] Running Multiple Containers for an Angular, Node project

    The code is from Plusight course, github link is here. In this post, we will give a overview about h ...

  5. android编码学习

    虽然以下博客有点老,但很清晰,有不明白的基础知识,可以来这里找找. 2015年最新Android基础入门教程目录(完结版) 1. 环境配置 Android stodio gradle配置踩过的坑 An ...

  6. 自建k8s集群日志采集到阿里云日志服务

    自建k8s集群 的master 节点安装 logtail 采集工具 wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.c ...

  7. Debug 路漫漫-07

    201811—201903???   1)关于训练参数是复数的问题    ——q_k ^theta   q_k(是item的特征矩阵)中有可能是负数,而指数 theta 如果是含小数点的话,就会产生复 ...

  8. Mosquitto --topic

    订阅树的概念        Mosquitto通过订阅树的方式来管理所有的topic以及客户端的订阅关系,它首先将所有的topic按照/分割并组织成一棵树结构,从根节点到树中的每个节点即组成该节点所对 ...

  9. bzoj1030【JSOI2007】文本生成器

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2891  Solved: 1193 [Submit][St ...

  10. 使用PHPExcel实现Excel文件的导入和导出(模板导出)

    在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是:1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽度 ...