我正在使用嵌套字典,并且有多个具有相同键的字典文件。字典和任务本身正在运行,但我需要添加以下条件。如果子元素的状态 == 不存在,则不要运行任务
我的字典:
qualitygate:
- qualitygate_name: QA-dev
operators:
- metric: coverage
operator: CT
error: 1
state: present
- qualitygate_name: Department-xyc
operators:
- metric: coverage
operator: CT
error: 10
state: absent
- metric: duplicated_lines
operator: GT
error: 5
state: present
使用我的任务:
- ansible.builtin.uri:
url: "{{ protocol }}://{{ server_fqdn }}/api/qualitygates/create_condition"
user: "{{ token }}"
method: POST
body_format: form-urlencoded
body:
error: "{{ item.1.error }}"
metric: "{{ item.1.metric }}"
gateName: "{{ item.0.qualitygate_name }}"
op: "{{ item.1.operator }}"
loop: "{{ qualitygate | subelements('operators', 'skip_missing=True') }}"
when: qualitygate[item]['state'] is match("present")
如何更改过滤器以仅匹配“present”值
在条件中使用子元素 item
完整测试剧本的示例
给出简略
这里的问题是,
item
循环中没有一个值。如果您执行一些简单的诊断,如下所示:你会看到它
item
看起来像这样:文档中对此进行了描述:
您希望在条件中使用第二个值
item
(对于每次迭代,它代表来自其中一个列表的值operators
)。这样会得到类似这样的结果:如果我们将所有内容都包装在一个
debug
任务中,如下所示:这给了我们:
我认为这正是你想要的。