list - 字典的ansible访问列表

标签 list dictionary variables ansible

<分区>

我正在尝试使用外部 var 文件为自定义模块创建一组组和成员。我需要做的就是访问列表中的字典列表。 我已经尝试了很多东西,但我现在可能拥有的最接近的东西是: 变量.yml:

groups_and_members:
  FIRST_GROUP:
    "memberx":
      octet: 1
      action: add
    "nostandardy":
      octet: 3
      action: add
    "memberz":
      octet: 5
      action: add
  OTHER_GROUP:
    "member1":
      octet: 7
      action: delete
    "unexpected":
      octet: 1
      action: add

任务.yml:

  - name: "add members"
    mymodule:
      cmd: "{{ item.value.action }}"
      parameters:
        name: "{{ item.key }}"
        octet: "{{ item.value.octet }}"
    with_items: "{{ groups_and_members }}"

所以想法是从列表中获取 (groups_and_members).value(第一次迭代中的 FIRST_GROUP)。并在 cmd 中使用其成员属性。但是因为我不知道组的名称和成员的名称,所以我不确定如何访问它们。我不会事先知道团体或成员的名字。这些命令应该在一个列表中,这样就不必在有新命令的情况下执行新任务。 如何访问组、成员和成员属性? 我尝试过 with_dict、with_subelements 等,但似乎无法弄明白。

最佳答案

我应该以不同的方式格式化字典列表。这是一个重复的问题:在这里回答: Ansible with_subelements

我的变量应该是这样的:

groups_members:
  - groupname: FIRST_GROUP
    members:
      - name: memberx
        octet: "1"
        action: add
      - name: nostandardy
        octet: "3"
        action: add
      - name: memberz
        octet: "2"
        action: add
      - name: unexpected
        octet: "1"
        action: add
  - groupname: RHOST
    members:
      - member: other1
        octet: "1"
        action: add

然后可以作为 item.1.action 或 item.0.value 和任务访问

    with_subelements:
  - "{{ groups_members }}"
  - members

关于list - 字典的ansible访问列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52739244/

相关文章:

python - 如何在Python中打印字符串中带有字母的值的索引?

oracle - 在 Oracle 中定义局部变量的最简单方法是什么?

angular - 如何从父 Angular 2 获取子变量

java - 从另一个类访问整数值

c# - 使用 Linq 比较 2 列表中的字符串

c - 使用头节点反转双向链表

列表理解 : Even numbers from 0 to x

c# - 如何将 List<X> 转换为 Dictionary<X,Y> 并用 null 填充值?

java - 如何将我创建的类设置为 TreeMap 中的键 (Java)

c++ - 在 C++ STL 中使用 Map 获取编译错误?