Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/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_Dynamic Variables - Fatal编程技术网

在ansible中计算动态变量名

在ansible中计算动态变量名,ansible,dynamic-variables,Ansible,Dynamic Variables,我在VAR中放置了如下内容: vars/main.yml hello_port: 80 world_port: 81 在我的ansbile文件中,我用 vars_files: - ./vars/main.yml 这是我初始化m_名称的方式: - name: set_fact set_fact: m_name: - 'hello' - 'world' 之后,我有了一个任务,使用with_项进行迭代: - debug:

我在VAR中放置了如下内容:

vars/main.yml
hello_port: 80
world_port: 81
在我的ansbile文件中,我用

vars_files:
  - ./vars/main.yml
这是我初始化m_名称的方式:

 - name: set_fact
     set_fact:
        m_name:
          - 'hello'
          - 'world'
之后,我有了一个任务,使用with_项进行迭代:

 - debug:
      msg: "{{ (item + '_port') }}"
   with_items: "{{ m_name }}"
但我有一个输出

hello_port
world_port
不是他们的价值观


好的,我发现如果我使用debug-var,它就可以工作了。但是,如果我想将这个表达式
“{{(item+''u port')}}}”
作为shell任务中的一个示例,它不会对其求值。是否有一种方法可以计算动态创建的变量名称-以获取值

{{ hostvars[inventory_hostname][item + '_port'] }}


我想你正在寻找:

{{ vars[item ~ '_port'] }}

除了答案之外,请解释它为什么会起作用。我不知道它的具体实现为什么会起作用,但我正在使用模板为存储在vault加密文件中的不同生产阶段设置密码
password=“{{vars['password\uz'~stage]}}”
Wow!实际上,它比查找('vars',item~''u port')要好得多。@henry我找不到任何关于
vars[..]
的文档。你还记得你在哪里找到的吗?我想知道它到底在做什么。
{{ vars[item ~ '_port'] }}