employees:
sarav:
city: Coimbatore
email: sarav@gritfy.com
mobile: '985643210'
tasks:
- name: gathering_complete_data
ansible.builtin.debug:
msg={{ ['sarav'] | map('extract', employees , 'email' ) }}
输出:
ok: [CS1] => {
"msg": [
"sarav@gritfy.com"
]
}
上述脚本成功运行。当我创建数据结构时:
employees:
sarav:
- city: Coimbatore
email: sarav@gritfy.com
mobile: '985643210'
使用 Ansible 地图过滤器,我无法收集信息(sarav 的电子邮件 ID)。
有人可以分享获取 sarav 电子邮件 ID 的代码吗?
1
最佳答案
1
您不需要映射过滤器提取。您可以直接处理属性
- debug:
msg: "{{ employees.sarav.email }}"
给出
msg: sarav@gritfy.com
在第二种情况下,你可以映射属性
- debug:
msg: "{{ employees.sarav | map(attribute='email') }}"
给出
msg:
- sarav@gritfy.com
完整测试剧本的示例
- hosts: localhost
vars:
employees:
sarav:
city: Coimbatore
email: sarav@gritfy.com
mobile: '985643210'
employee2:
sarav:
- city: Coimbatore
email: sarav@gritfy.com
mobile: '985643210'
tasks:
- debug:
msg: "{{ employees.sarav.email }}"
- debug:
msg: "{{ employee2.sarav | map(attribute='email') }}"
|
–
|