Automation Ansible字典键作为变量

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}}' 我该怎

让我们在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}}'
我该怎么做?我试过了

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 }}'