Ansible 如何将具有键值对的字符串转换为字典列表?
我正在尝试将我的剧本移植到ansible tower环境中。在我的剧本中,我定义了诸如db_list之类的变量:Ansible 如何将具有键值对的字符串转换为字典列表?,ansible,Ansible,我正在尝试将我的剧本移植到ansible tower环境中。在我的剧本中,我定义了诸如db_list之类的变量: db_list: - { dbid: 1, dbname: abc} - { dbid: 2, dbname: xyz} 在塔架测量中,我可以在测量中放置与textarea类似的信息: dbid: 1, dbname: abc dbid: 2, dbname: xyz 如何将textarea数据转换为字典列表?我找不到任何适合转换的jinj2过滤器 我的ansible
db_list:
- { dbid: 1, dbname: abc}
- { dbid: 2, dbname: xyz}
在塔架测量中,我可以在测量中放置与textarea类似的信息:
dbid: 1, dbname: abc
dbid: 2, dbname: xyz
如何将textarea数据转换为字典列表?我找不到任何适合转换的jinj2过滤器
我的ansible版本是2.4。假设textarea的内容位于名为
textarea
的变量中,您可以利用yaml非常自由的事实:
- set_fact:
db_list: >-
{{ textarea.split("\n") | select |
map("regex_replace", "^", "- {") |
map("regex_replace", "$", "}") |
join("\n") | from_yaml }}
如果管道中的
select
设计用于去除任何空行(因为这些行不会为真)假设textarea的内容位于名为textarea
的变量中,则可以利用yaml非常自由的事实:
- set_fact:
db_list: >-
{{ textarea.split("\n") | select |
map("regex_replace", "^", "- {") |
map("regex_replace", "$", "}") |
join("\n") | from_yaml }}
管道中的
select
设计用于去除任何空行(因为这些行不是真的)这有效!我用单引号代替了双引号这很有效!我用单引号代替了双引号