代码之家  ›  专栏  ›  技术社区  ›  Thibaut

循环使用Ansible中的dictionary中的列表

  •  0
  • Thibaut  · 技术社区  · 1 年前

    我试图迭代Ansible中Dictionary中的一个列表,但找到如何访问该列表。

    我的变量如下所示:

    user_configs:
      hassuser:
        name: hassuser
        groups: 
         - hassuser
         - dialout
        uid: 8123
        capabilities:
          - cap_net_raw
          - cap_net_admin
    

    我的任务是这样的:

        - name: Update /etc/security/capability.conf to add required has capabilities
          lineinfile:
            dest: /etc/security/capability.conf
            line: "{{ item }}             {{ user_configs['hassuser'].name }}"
            owner: root
            with_items: "{{ user_configs['hassuser']['capabilities'] }}"
    

    也尝试过这个,但没有效果:

         - name: Update /etc/security/capability.conf to add required hass capabilities
           lineinfile:
             dest: /etc/security/capability.conf
             line: "{{ item.key }}             {{ user_configs['hassuser'].name }}"
             owner: root
           loop: "{{ lookup('dict', user_configs['hassuser'].capabilities) }}"
    

    谢谢

    1 回复  |  直到 1 年前
        1
  •  2
  •   larsks    1 年前

    在您的第一个示例中, with_items 缩进错误(这是上的一个论点 任务 ,不在上 lineinfile 单元

        - name: Update /etc/security/capability.conf to add required has capabilities
          lineinfile:
            dest: /etc/security/capability.conf
            line: "{{ item }}             {{ user_configs['hassuser'].name }}"
            owner: root
          with_items: "{{ user_configs['hassuser']['capabilities'] }}"
    

    在第二个示例中,您使用 loop ,您通常应该使用它来替换 带项(_I) ,但您选择了一个更复杂的解决方案,而您本应将其与 带项(_I) 在前面的示例中:

        - name: Update /etc/security/capability.conf to add required has capabilities
          lineinfile:
            dest: /etc/security/capability.conf
            line: "{{ item }}             {{ user_configs['hassuser'].name }}"
            owner: root
          loop: "{{ user_configs['hassuser']['capabilities'] }}"
    

    请注意,您也可以这样拼写最后一行:

    loop: "{{ user_configs.hassuser.capabilities }}"