Ansible/Jinja2获取项目文件管理器
假设我有一个列表:Ansible/Jinja2获取项目文件管理器,ansible,jinja2,Ansible,Jinja2,假设我有一个列表: vpcs: - name: myvpc1 description: bla zone: Enterprise cidr: "10.5.0.0/16" - name: vpc2 description: bla zone: Private cidr: "10.6.0.0/16" 我想选择vpc1区域。所以下面的过滤器应该返回 企业 我的实际过滤器 {{ vpcs | selectattr('name', 'match'
vpcs:
- name: myvpc1
description: bla
zone: Enterprise
cidr: "10.5.0.0/16"
- name: vpc2
description: bla
zone: Private
cidr: "10.6.0.0/16"
我想选择vpc1
区域。所以下面的过滤器应该返回
企业
我的实际过滤器
{{ vpcs | selectattr('name', 'match', 'myvpc1') | first | attr('zone') }}
由于以下原因而无法工作:
获取对象的属性。foo | attr(“bar”)的工作原理与foo.bar类似
始终返回一个属性,并且不查找项目
所以它说找不到键
我将如何描述此筛选器您应该将筛选器更改为下面的值,以便它获取zone的值
tasks:
- set_fact:
myvar: "{{ (vpcs | selectattr('name', 'match', 'myvpc1') | first)['zone'] }}"
- debug: var=myvar
原因可以在Ansible的github问题中找到,由jctanner(Ansible的成员)回答。您应该将过滤器更改为下面的值,以便它获取zone的值
tasks:
- set_fact:
myvar: "{{ (vpcs | selectattr('name', 'match', 'myvpc1') | first)['zone'] }}"
- debug: var=myvar
原因可以在Ansible的github问题中找到,由jctanner(Ansible的成员)回答。是的,原因是字典键与字典属性不同。attr()只返回对象的属性。@IgnacioMillán这是我问题中的引号。奇怪的是,
getitem
Yes似乎没有过滤器,原因是字典键与字典属性不同。attr()只返回对象的属性。@IgnacioMillán这是我问题中的引号。奇怪的是,getitem