如何将具有键值对的字符串转换为词典列表?

时间:2019-02-21 19:20:26

标签: ansible

我正在尝试将我的剧本迁移到ansible塔式环境中。在我的剧本中,我定义了db_list之类的变量:

db_list:
   - { dbid: 1, dbname: abc}
   - { dbid: 2, dbname: xyz}

在塔式调查中,我可以在调查中输入与textarea类似的信息:

dbid: 1, dbname: abc
dbid: 2, dbname: xyz

如何将我的textarea数据转换为字典列表?我找不到适合转换的jinj2过滤器。

我的ansible版本是2.4。

1 个答案:

答案 0 :(得分:0)

假设textarea的内容位于名为textarea的变量中,则可以利用yaml非常自由的事实:

- set_fact:
    db_list: >-
      {{ textarea.split("\n") | select | 
         map("regex_replace", "^", "- {") | 
         map("regex_replace", "$", "}") | 
         join("\n") | from_yaml }}

管道中的select旨在删除任何空行(因为这些行将不是True-thy)