Automation Ansible字典键作为变量
让我们在role defaults/main.yml中使用类似的内容:Automation Ansible字典键作为变量,automation,continuous-integration,ansible,jinja2,Automation,Continuous Integration,Ansible,Jinja2,让我们在role defaults/main.yml中使用类似的内容: num: 0 config: 0: a: true b: 'x' 1: a: false b: 'y' 2: a: false b: 'z' 现在,我在playbook调用中发送-e num=1,我想基于角色中其他地方的此值使用值a和b,例如: aValue: '{{config[num].a}}' bValue: '{{config[num].b}}' 我该怎
num: 0
config:
0:
a: true
b: 'x'
1:
a: false
b: 'y'
2:
a: false
b: 'z'
现在,我在playbook调用中发送-e num=1
,我想基于角色中其他地方的此值使用值a
和b
,例如:
aValue: '{{config[num].a}}'
bValue: '{{config[num].b}}'
我该怎么做?我试过了
aValue:'{{config[num].a}}'
但出现错误:'dict object'没有属性u'1'
aValue:'{{config[“num”].a}}'
但出现错误:
'dict object'没有属性'num'
如果引用这些配置键,它们将成为字符串:
config:
"0":
a: true
或者,如果您的剧本中的其他部分确实希望它们成为数字,您可以通过两种方式使num
实际上成为数字:
ansible-e'{“num”:1}'
使ansible将--额外变量
解析为JSON,其中“num”
实际上将是一个数字(在JSON意义上)
或在jinja2表达式中强制执行num
:
aValue: '{{ config[ (num|int) ].a }}'