如何从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] }}"
这是最好的方法吗