Ansible 列表中的可解析项

Ansible 列表中的可解析项,ansible,jinja2,devops,ansible-2.x,Ansible,Jinja2,Devops,Ansible 2.x,当:item.name在item\u列表中时,我正在尝试执行一个有条件的 如何使when子句显式,以便如果循环通过的项目列表仅为[data],则“database”和“proddata”不会将条件传递为true?我只想通过准确的拼写 范例 item_list: [data, database, proddata] 如您所见,数据不在最终列表中,但它显示为true。我相信,因为数据包含在proddata和数据库中。如果可能,我希望在以下时间执行:item.name==(最终列表中的item.na

当:item.name在item\u列表中时,我正在尝试执行一个有条件的

如何使when子句显式,以便如果循环通过的项目列表仅为[data],则“database”和“proddata”不会将条件传递为true?我只想通过准确的拼写

范例

item_list: [data, database, proddata]

如您所见,
数据
不在
最终列表中,但它显示为true。我相信,因为数据包含在proddata和数据库中。如果可能,我希望在以下时间执行
:item.name==(最终列表中的item.name)
。我只是不确定我需要哪个过滤器。

如果您的
最终列表是一个列表,而不是带有逗号分隔值的字符串,那么它就可以工作了

因此,如果您的var定义如下:

---

- name: Explicit example
  hosts: localhost
  connection: local
  vars:
    source_list: 
      - name: proddata
      - name: data
      - name: other
    dest_list1: [this, thing]
    dest_list2: [database, proddata]
    final_list: '{{ dest_list1 | union(dest_list2) | join(",") }}'

  tasks:
  - name: test
    debug:
      msg: '{{ item.name }}'
    with_items: 
      - '{{ source_list }}'
    when: item.name in final_list
状况

final_list: '{{ dest_list1 | union(dest_list2) }}'
会有效果的

但我假设您将它存储为字符串是有原因的,因为您在其他地方使用它。如果是这种情况,并且您无法更改它(您可以在需要它作为字符串的位置执行
连接
),您只需在您的条件下拆分它:

when: item.name in final_list

如果您的
final_list
是一个列表,而不是一个带有逗号分隔值的字符串,那么它将起作用

因此,如果您的var定义如下:

---

- name: Explicit example
  hosts: localhost
  connection: local
  vars:
    source_list: 
      - name: proddata
      - name: data
      - name: other
    dest_list1: [this, thing]
    dest_list2: [database, proddata]
    final_list: '{{ dest_list1 | union(dest_list2) | join(",") }}'

  tasks:
  - name: test
    debug:
      msg: '{{ item.name }}'
    with_items: 
      - '{{ source_list }}'
    when: item.name in final_list
状况

final_list: '{{ dest_list1 | union(dest_list2) }}'
会有效果的

但我假设您将它存储为字符串是有原因的,因为您在其他地方使用它。如果是这种情况,并且您无法更改它(您可以在需要它作为字符串的位置执行
连接
),您只需在您的条件下拆分它:

when: item.name in final_list

你能给我们举个例子吗?很有可能,您需要
filter()
来完成此操作,但问题非常不清楚。呜呜!我道歉。我以为我在看python标签。尽管如此,我无法想象其他人对此非常清楚。
data
etc是什么类型的?抱歉耽搁了。请看我的example@Goodies你能为这个问题提供一些见解吗?你能给我们举个例子吗?很有可能,您需要
filter()
来完成此操作,但问题非常不清楚。呜呜!我道歉。我以为我在看python标签。尽管如此,我无法想象其他人对此非常清楚。
data
etc是什么类型的?抱歉耽搁了。请看我的example@Goodies你能为这个问题提供一些见解吗?非常感谢@udondan!'加入(“,”)是我的问题-删除它有效。我会投票赞成这个答案,但不会让我:——\非常感谢@udondan!'加入(“,”)是我的问题-删除它有效。我会投票支持这个答案,但不会让我:-\