【问题标题】:Ansible loop over list extracted from dictAnsible 循环遍历从 dict 中提取的列表
【发布时间】:2021-04-07 18:31:49
【问题描述】:

我在 RHEL 7.7 上使用 Ansible 2.9,我正在尝试遍历一个来自 dict 元素的值的列表。到目前为止,我有这个 var 文件并播放:

ssh_keys:
  account: blah
  permissions: 600
  keys:
    - qa-publickeys['1']
    - qa-publickeys['2']
    - qa-publickeys['3']

戏剧:

- name: Traversing ssh keys 
  debug:
    msg: "Here's: {{ item }}"
  loop: "{{ ['keys'] | map('extract', ssh_keys) | list }}"

问题是,msg"msg": "Here's: [u\"qa-publickeys['1']\", u\"qa-publickeys['2']\", u\"qa-publickeys['3']\"]"

为什么不给我三个输出,Here's: qa-publickeys['1'] 作为第一个输出,Here's: qa-publickeys['2'] 作为第二个输出,最后是Here's: qa-publickeys['3']

我在本剧中呈现给loop 的列表并没有被循环,它只是在一个块中迭代一次。

【问题讨论】:

    标签: ansible


    【解决方案1】:

    你似乎对自己来说真的很复杂,没有明显的原因。
    Ansible 中的字典可以通过. 点表示法或[] 方括号表示法访问。

    现在因为.keys()确实是Python中字典的内置方法,所以不能使用第一种表示法,但可以使用后一种表示法。

    鉴于剧本:

    - hosts: all
      gather_facts: no
    
      tasks:
        - debug:
            msg: "Here's: {{ item }}"
          loop: "{{ ssh_keys['keys'] }}"
          vars:
            ssh_keys:
              account: blah
              permissions: 600
              keys:
                - qa-publickeys['1']
                - qa-publickeys['2']
                - qa-publickeys['3']
    

    这产生了回顾:

    PLAY [all] *******************************************************************************************************
    
    TASK [debug] *****************************************************************************************************
    ok: [localhost] => (item=qa-publickeys['1']) => 
      msg: 'Here''s: qa-publickeys[''1'']'
    ok: [localhost] => (item=qa-publickeys['2']) => 
      msg: 'Here''s: qa-publickeys[''2'']'
    ok: [localhost] => (item=qa-publickeys['3']) => 
      msg: 'Here''s: qa-publickeys[''3'']'
    
    PLAY RECAP *******************************************************************************************************
    localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    

    【讨论】:

      猜你喜欢
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多