Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 filter by属性包含一个值_Ansible_Jinja2 - Fatal编程技术网

Ansible filter by属性包含一个值

Ansible filter by属性包含一个值,ansible,jinja2,Ansible,Jinja2,在Ansible中,如何通过对象的属性是否包含值来过滤对象 例如:我想通过过滤private\u-man对象,返回具有属性name=“a2”的private\u-man对象,其中addr包含“1.2.3.4” 以下是Ansible代码: - hosts: localhost connection: local gather_facts: no vars: network: addresses: private_ext: - na

在Ansible中,如何通过对象的属性是否包含值来过滤对象

例如:我想通过过滤
private\u-man
对象,返回具有属性
name=“a2”
private\u-man
对象,其中
addr
包含
“1.2.3.4”

以下是Ansible代码:

- hosts: localhost
  connection: local
  gather_facts: no
  vars:
    network:
      addresses:
        private_ext:
          - name: a1
            addr:
              - 1.2.3.4
        private_man:
          - name: a2
            addr:
              - 10.10.20.30
              - 1.2.3.4
          - name: a3
            addr:
              - 10.90.80.10
我尝试了以下方法:

- debug:
    msg: "{{ item.name }}"
  with_items: "{{ network.addresses.private_man | selectattr('addr', 'in', '1.2.3.4') | list }}"
我希望它显示为
a2
,因为a2对象的addr元素包含
1.2.3.4

然而,当我运行这个程序时,它完全失败了,可能是因为
selectaddr('addr','in','1.2.3.4')
无效。

这行吗

  - debug:
      msg: "{{ item.name }}"
    with_items: "{{network.addresses.private_man}}"
    when: '"1.2.3.4" in item.addr'

您只能在
selectattr
中使用Jinja2测试:

例如:

- debug:
    msg: "{{ item.name }}"
  with_items: "{{ network.addresses.private_man | selectattr('addr','issuperset',['1.2.3.4']) | list }}"

我只是能够使用下面的方法将结果从
ec2\u asg\u事实
缩小到只有那些在
launch\u configuration\u name
中具有给定变量值的结果。
search
测试似乎没有很好的文档记录,它可能是一个附加组件?我想如果其他人想做类似的事情,我会和大家分享。下面的
appRole.name
可能类似于“雇员”或“数据”

意识到我可以“何时”处理列表中的某个项目是一次令人兴奋的经历。这改变了一切!
  - name: Narrow my list
    set_fact:
      asgList: "{{ autoScalingGroupNames.results | selectattr('launch_configuration_name', 'search', appRole.name) | list }}"