Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible循环项如何可能被循环任务外部的变量引用?_Ansible - Fatal编程技术网

Ansible循环项如何可能被循环任务外部的变量引用?

Ansible循环项如何可能被循环任务外部的变量引用?,ansible,Ansible,我有许多任务都需要引用同一个对象,其中对象名由循环项修改。 对象名称很复杂,在未来的脚本版本中可能会发生更改,我不希望每次都要更改名称。 因此,我希望在顶级变量中定义对象名。 但这意味着顶级var定义需要引用循环本身之外的循环“项”。 我原以为它会抛出一个错误,说“项”没有定义,但我很高兴发现它没有定义。 我猜Ansible一定在评估每个任务中的顶级变量,此时“项”将是有效的。 有人能给我指一下解释这一可变评估过程的文档吗? 示例脚本: - hosts: all vars: Obje

我有许多任务都需要引用同一个对象,其中对象名由循环项修改。
对象名称很复杂,在未来的脚本版本中可能会发生更改,我不希望每次都要更改名称。
因此,我希望在顶级变量中定义对象名。
但这意味着顶级var定义需要引用循环本身之外的循环“项”。
我原以为它会抛出一个错误,说“项”没有定义,但我很高兴发现它没有定义。
我猜Ansible一定在评估每个任务中的顶级变量,此时“项”将是有效的。
有人能给我指一下解释这一可变评估过程的文档吗?
示例脚本:

- hosts: all
  vars:
    ObjectName: "ObjectInMode-{{item}}-WithComplexName"
  tasks:
  - name: Perform Function 1
    Function1:
      ObjectRef: "{{ObjectName}}"
    with_items:
      - Mode1
      - Mode2
  - name: Perform Function 2
    Function2:
      ObjectRef: "{{ObjectName}}"
    with_items:
      - Mode1
      - Mode2

通常,Ansible会在最后一秒对playbook内容中的任何变量进行求值,这意味着如果您定义了一个数据结构,那么该数据结构本身就可以定义其中的变量值,并且一切都会像您所期望的那样“正常工作”。这也意味着变量字符串可以在这些字符串中包含其他变量