Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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,我希望从第三方模块输出中检索一个键的值(每次都有不同的键名) 以下是我试图实现的目标的简单复制: 我有一个变量- secure_name: "ALIAS_HTTPD_HOSTNAME1' 然后我运行任务: - name: retrieve param name shell: cmd: "echo {{ secure_name }} | cut -'_' -f2-" register secure_param_name 我有第三个模块,它将上面的{secure_param_na

我希望从第三方模块输出中检索一个键的值(每次都有不同的键名)

以下是我试图实现的目标的简单复制: 我有一个变量-

secure_name: "ALIAS_HTTPD_HOSTNAME1'
然后我运行任务:

- name: retrieve param name
  shell:
    cmd: "echo {{ secure_name }} | cut -'_' -f2-"
  register secure_param_name
我有第三个模块,它将上面的{secure_param_name.stdout | upper}}作为参数,从第三方软件中检索名称-值对,以保存安全密钥对

第三方模块的输出存储在名为:secure\u results

第三方模块调用的输出为:

{
    "changed": false,
    "_ansible_no_log: false,
    "HTTPD_HOSTNAME1": "SERVERNAME1"
}
如果我发布:

-debug: msg="{{ secure_results.HTTPD_HOSTNAME1 }}"
我获得所需的输出SERVERNAME1

然而,我不想硬编码我想要检索的每个参数。我希望能够使用secure_param_name.stdout的值来组成变量_name

我试过:

-debug: msg="{{'secure_results.'+secure_param_name.stdout }}
但这只返回:secure_results.HTTPD_HOSTNAME1

如何解析上述动态变量名? 使用两组{{{}}不起作用

我也尝试过:

- debug: msg="{{ vars['secure_results.' ~ secure_param_name.stdout] }}"
“dict object”的此错误没有attibute u'secure_results.HTTPD_HOSTNAME1'

我有点困惑,为什么它在{{}中放置相同的字符串时找不到字典对象“secure_results.HTTPD_HOSTNAME1”检索上面第一次调试中显示的值


非常感谢您的任何帮助

我想我现在可以通过以下方式实现这一点:

- debug: msg="{{ hostvars[inventory_hostname]['secure_results'][secure_param_name.stdout] }}"
这是最好的方法吗