Ansible检查复杂字典中的密钥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible检查复杂字典中的密钥相关的知识,希望对你有一定的参考价值。

我有复杂的字典结构,我想检查是否定义了一个子键。我甚至不知道这是否可能..

这是我的dict的样子:

config: 1: client: ubuntu network_setup: - routed ports: sw1: null sw2: client: 1/0/2 lte: 1/0/5 2: client: archlinux network_setup: - bridged ports: sw1: client: 1/0/4 sw2: null ...

注意:无法定义lte键!

我想要的是检查配置字典中是否定义了lte。理想情况下,我需要使用循环遍历config中的每个条目。

我可能会写一个自定义插件,因为这听起来很难。

答案

如果它是一个列表,你将不得不循环它,你可以尝试这种情况

- debug: var=test_item.ports.sw2.lte
  when: test_item.ports.sw2.lte is defined
  with_items: "{{ config }}"
  loop_control:
    loop_var: test_item

when条件将检查变量是否已定义。

以上是关于Ansible检查复杂字典中的密钥的主要内容,如果未能解决你的问题,请参考以下文章

寻找一种优雅的方法来检查字典中是不是存在密钥[重复]

字典说密钥不存在

Stat.exists 与 ansible 中的变量列表

在字典中添加密钥之前,如何使用循环?

源代码控制中的 Ansible SSH 私钥?

将项目的密钥存储在并发字典中,该项目的密钥作为在C#中的字典中出现的次数