擅长:python、mysql、java
<p>@stacksonstacks链接到的过滤器在这种特定情况下是没有帮助的,因为端口的填充总是相同的,只是它们的数量发生变化:<code>set([1,2,2,2]) == set([1,2])</code>总是<code>True</code></p>
<p>所以我们真正想要的是按端口分组,寻找长度大于1的子节点。然后,我们可以提取导致冲突的密钥的名称,以便报告它们。在</p>
<pre><code>tasks:
- set_fact:
bogus: >-
{%- for port_num, dicts in (my_dict | dict2items | groupby('value.redis.port'))
if (dicts|length) > 1 -%}
{{ dicts | map(attribute='key') | list }}
{%- endfor -%}
- debug: var=item
when: '{{ (bogus | length) > 0 }}'
with_items: '{{ bogus }}'
</code></pre>