ansible:从dictsort中获取价值

时间:2017-11-14 19:10:22

标签: ansible

我有以下字典:

bigip_provider:
  bigip1: "10.0.0.16"
  bigip2: "10.0.0.18"
  bigip3: "10.0.0.17"
  bigip4: "10.0.0.19"
  bigip5: "10.0.0.27"
  bigip6: "10.0.0.23"
  bigip7: "10.0.0.25"
  bigip8: "10.0.0.28"

我希望得到将它们转换为字符串的值:

{{ bigip_provider.values() | list | join('/24 ') +'/24' }}

但是按键排序的值:ie {{bigip_provider | dictsort ...}

我试图仅使用map和selectattr提取dictsort输出的值,但我还没有找到一种方法。

非常感谢

1 个答案:

答案 0 :(得分:0)

由于您可以使用点符号(例如mylist.1)访问列表元素,因此您可以使用map(attribute='1')来减少列表(黑客的类型,但没关系):

- hosts: localhost
  gather_facts: no
  vars:
    bigip_provider:
      bigip9: "10.0.0.16"
      bigip2: "10.0.0.18"
      bigip3: "10.0.0.17"
  tasks:
    - debug:
        msg: "{{ bigip_provider | dictsort | map(attribute='1') | map('regex_replace','$','/24') | list }}"

结果:

ok: [localhost] => {
    "msg": [
        "10.0.0.18/24",
        "10.0.0.17/24",
        "10.0.0.16/24"
    ]
}