我有以下字典:
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输出的值,但我还没有找到一种方法。
非常感谢
答案 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"
]
}