python - 如何在 Ansible 中转换字符串列表中的对象列表?
问题描述
我有一个形式的变量:
vars:
somelist:
- abc: 1
def: 'somestring1'
- abc: 2
def: 'somestring2'
- abc: 3
def: 'somestring3'
我想将以下列表传递给某个角色的变量:
- import_role:
name: somerole
vars:
somevar:
- '/somestring1/1/'
- '/somestring2/2/'
- '/somestring3/3/'
如何将对象映射somelist
到字符串/{{ def }}/{{ abc }}/
并将结果列表传递给somevar
?
解决方案
在 Ansible 中,下面的任务完成了这项工作
- set_fact:
somevar: "{{ somevar|default([]) +
[ '/' ~ item.def ~ '/' ~ item.abc ~ '/'] }}"
loop: "{{ somelist }}"
下一个选项是选择值,在属性前后添加空字符串,并加入列表的项目。例如
- set_fact:
somevar: "{{ somelist|json_query('[].[``,def,abc,``]')|
map('join','/')|
list }}"
给
somevar:
- /somestring1/1/
- /somestring2/2/
- /somestring3/3/
推荐阅读
- python - 如何在机器人框架库文件中进行多重继承?
- javascript - 如何通过Javascript设置输入文件的位置?
- vue.js - 会话存储中的 vue 设置值未反映在数据中
- excel - 如何从被调用函数中终止 VBA Sub
- angular - 限制空输入字段上的点
- python-3.x - 如何使用 python 3 提取 zip 文件
- dialogflow-es - 在 Dialog flow webhook 中的 Card 上添加多个按钮
- flutter - Flutter for 循环以生成小部件列表
- python-docx - 如何使用 python-docx 在单元格内同时对齐和设置颜色
- ios - 如何在外侧 UIButton Click 上获取 CollectionViewCell indexPath