这个Ansible变量应该如何定义?

这个Ansible变量应该如何定义?,ansible,Ansible,我试图理解我在一个不完整的Ansible角色中发现的变量引用。角色使用引用值 dest: “{{params['box'].t1}}” 在另一个yaml文件中,我有 box: t1: "Albany" t2: "Albuquerque" params没有定义,所以很明显这是行不通的,但我无法找到定义它的正确方法有人能告诉我必须在何处(或如何)定义参数才能在Ansible中使用此变量引用吗? 相关问题。在dest:“{{params['box'].t1}}”中使用方括号是否表

我试图理解我在一个不完整的Ansible角色中发现的变量引用。角色使用引用值

dest: “{{params['box'].t1}}”
在另一个yaml文件中,我有

box:
    t1: "Albany"
    t2: "Albuquerque"
params没有定义,所以很明显这是行不通的,但我无法找到定义它的正确方法有人能告诉我必须在何处(或如何)定义参数才能在Ansible中使用此变量引用吗?



相关问题。在
dest:“{{params['box'].t1}}”
中使用方括号是否表示它是一本词典?如果是的话,我也可以把它写成
dest:{{params['box']['t1']}
或者
dest:{{params.box.t1}

params['box'].t1
指的是
奥尔巴尼

params:
  box:
    t1: "Albany"
    t2: "Albuquerque"
它与
params.box.t1
params['box']['t1']
相同

括号表示一个键名,因此它们暗示这是一个字典


当您希望通过变量引用键时,通常使用方括号表示法:

vars:
  wanted_key: box
  params:
    box:
      t1: Albany
    other:
      t1: Albuquerque
然后
params[wanted_key].t1
指的是
Albany


在您的示例中,方括号内的值是一个字符串(带引号),因此上述所有示例都是等效的。

params['box'].t1
指的是以下内容中的
Albany

params:
  box:
    t1: "Albany"
    t2: "Albuquerque"
它与
params.box.t1
params['box']['t1']
相同

括号表示一个键名,因此它们暗示这是一个字典


当您希望通过变量引用键时,通常使用方括号表示法:

vars:
  wanted_key: box
  params:
    box:
      t1: Albany
    other:
      t1: Albuquerque
然后
params[wanted_key].t1
指的是
Albany


在您的示例中,方括号内的值是一个字符串(带引号),因此以上所有示例都是等效的。

使用params:实际上是我尝试的第一件事,但是因为我错误地排列了yaml文件,所以它不起作用。感谢您的精彩解释并使我避免了愚蠢的错误!!!使用params:实际上是我尝试的第一件事,但是因为我错误地排列了yaml文件,所以它不起作用没有起作用。谢谢你的解释,也谢谢你把我从愚蠢的错误中解救出来!!!