Ansible变量嵌套解析

有时候需要用到ansible的变量的嵌套解析,就是“变量中嵌套变量”。例子如下:

假设有一个外部传递的变量,system_code = CRM,而我们同时有一系列类似的变量,如:

ABS_port=10000

ETL_port=5678

CRM_port=1234

想通过system_code变量来决定我要用哪个xxx_port,所以需要变量嵌套。

ansible yaml写法如下,在ansible 2.2中通过。(在2.5版本后有新的写法)

- hosts: remote_node
  vars:
    SYSTEM: "{{system_code}}_port"  # 先得到字符串CRM_port
  tasks:
  - name: "Get port number"
    shell: "echo {{ vars[SYSTEM] }}"  # 再在vars字典中提取上面拼接得到的字符串结果,然后在全局变量中解析"CRM_port"的值

原文地址:https://www.cnblogs.com/pekkle/p/12057573.html

时间: 2024-11-07 14:40:43

Ansible变量嵌套解析的相关文章

ansible变量

    ansible变量的使用方法 1.主机变量:直接在/etc/ansible/hosts文件中,主机的后边设置key=value的格式 注:inventory_hostname是ansible自带的变量,代表组中的每个主机 #在配置文件中定义主机变量 [[email protected] playbook]# cat /etc/ansible/hosts [webservers] 192.168.2.101 key=101 192.168.2.111 key=111 #写playbook,

零基础学python-16.3 变量名解析:LEGB原则

这一章节我们来说说变量名解析的原则:LEGB原则 1.当函数使用未认证的变量名时,python搜索4个作用域,本地作用域(L)->上一层结构中def或者lambda的本地作用域(E)->全局作用域(G)>内置作用域(B),并且在第一次找到这个变量名的地方停下来 2.函数给一个变量赋值的时候,总是创建或者改变本地作用域的变量名,除法他是声明为全局 >>> def test(): x=1 print(x) print(id(x)) x=2 print(x) print(id

JavaScript的变量预解析特性

JavaScript是解释型语言是毋庸置疑的,但它是不是仅在运行时自上往下一句一句地解析的呢?事实上或某种现象证明并不是这样的,通过<JavaScript权威指南>及网上相关资料了解到,JavaScript有“预解析”行为.理解这一特性是很重要的,不然在实际开发中你可能会遇到很多无从解析的问题,甚至导致程序bug的存在.为了解析这一现象,也作为自己的一次学习总结,本文逐步引导你来认识JavaScript“预解析”,如果我的见解有误,还望指正.池州市贲生工艺品 我们先来看一个例子: var la

关于CMD中延迟环境变量嵌套的实现方法

在我昨天做的一个bat中(自动按日期重命名文件名)涉及到这方面的问题 以前涉及到这里时就想别的办法替代过去,今天好好扒出来说说: 实现变量嵌套的2种方法: 1,使用call实现变量嵌套 变量嵌套:即在变量中嵌套变量,将变量的值作为另外一个变量的名字(或一部分名字) 这种用法很多语言都支持,如PHP的$$p,如C语言的**p二级指针,但在BAT中这是第一次涉及 如:(需要通过a输入10) set a=1&set b1=10 call,echo %%b%a%%% call 这里实际是对命令行进行重新

js对变量的解析

js对自定义变量的解析 一.字符串拼接 const str = "girl!"; console.log("Hi,"+str);//结果: Hi,girl! 二.用${}进行解析 var arr = [10,11,12,13,41,42,45]; for (var i=0;i<arr.length;i++){ console.log(`${arr[i]}`); }//结果: 10 11 12 13 41 42 45 注意这个``不是单引号,而是反引号(``)

shell 变量嵌套取值 ,判断变量为空

1.变量嵌套取值 bitrate1=100 numbers=1 eval echo \$bitrate${numbers} >tmpbit tmpbitrate=`cat tmpbit` 2.判断变量为空 if [ ! -n $bitrate ];then echo null;fi

PHP 自定义字符串中的变量名解析

PHP 自定义字符串中的变量名解析 这样一个需求:页面的 title 可以在后台自定义,自定义内容中可能包含变量,变量用 {$var} 表示, 其中 $var 为变量名 将 title 字段存入数据库中,再提出来之后,用php自己的变量名解析就不管用了,会直接输出 {$var} ,不会像在定义字符串的时候,用双引号时就会自动把 {$var} 变换成相应的变量内容,这里就像是用单引号定义的字符串,所以需要自己解析. 这里的思路是用正则表达式把字符串中的所有 {$var} 提取出来,然后判断是否存在

ansible 变量简明入门

ansible 为什么需要变量? ansible 是用 python 语言编写的,如果连变量都不支持,要它何用? ansible 的变量用在什么地方? 我们在安装 ansible 后,最常使用它的方式就是 ansible 和 ansible-playbook.在这两种方式,都可以使用变量. ansible 的变量从哪里来? 例如: 1. 用户自定义的变量,在playbook 里定义的 vars 关键字,或者在其他文件定义的变量. 2. 无需用户自定义,而是来自远程主机收集到的 facts 变量.

shell cat EOF 变量自动解析问题

使用如下shell安装node时,一直提示 command not found wget https://mirrors.huaweicloud.com/nodejs/latest-v8.x/node-v8.16.0-linux-x64.tar.gz tar zxvf node-v8.16.0.tar.gz -C /usr/local cd /usr/local/ mv node* node cat <<EOF> /etc/profile.d/node.sh export NODE_HO