使用属性名作为其他变量访问ansible变量属性
我有以下代码:使用属性名作为其他变量访问ansible变量属性,ansible,ansible-facts,Ansible,Ansible Facts,我有以下代码: - name: "Get output from ec2.py" shell: python convinventory/ec2.py register: ec2_py_output - set_fact: EC2_MY_AP_HOST: "{{(ec2_py_output.stdout | from_json ).myIPs[0]}}" - set_fact: EC2_MY_AP_DATA: "{{ (ec2_py_output.stdout | fro
- name: "Get output from ec2.py"
shell: python convinventory/ec2.py
register: ec2_py_output
- set_fact:
EC2_MY_AP_HOST: "{{(ec2_py_output.stdout | from_json ).myIPs[0]}}"
- set_fact:
EC2_MY_AP_DATA: "{{ (ec2_py_output.stdout | from_json)._meta.hostvars. }}-{{EC2_IFX_AP_HOST}} " //Need to know the syntax on this line
我确认EC2\u MY\u AP\u HOST
返回类似10.0.1.2
我从python/ec2.py
收到的json结构如下所示:
{
"_meta": {
"hostvars": {
"10.0.1.2": {
< need to access this data in EC2_MY_AP_DATA >
}
} } }
{
“_meta”:{
“hostvars”:{
"10.0.1.2": {
<需要访问EC2\u MY\u AP\u数据中的此数据>
}
} } }
访问此数据的正确方法是什么?回答您的问题:
- set_fact:
EC2_MY_AP_DATA: "{{ (ec2_py_output.stdout | from_json)._meta.hostvars[EC2_MY_AP_HOST] }}"
但我的猜测是,您走错了路,您试图用这段代码解决的任务有不同的解决方案。我试图理解这个问题,但我做不到。
10.0.1.2
和10.0.36.13
之间有什么关系?myIPs
列表存储在哪里(为什么不在您发布的示例中,当然不是为了清楚,因为根本不清楚)?您需要访问哪些数据?以何种方式访问?你是在问在圆点后面放什么(怎么会有人知道)?您是否在询问如何参考字典10.0.36.13
(所有文档和常见问题解答中都描述了访问同名的事实hostvars
)?