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版本是2.4。
解决方案
假设 textarea 的内容在一个名为 的变量中textarea
,您可以利用 yaml 非常自由的事实:
- set_fact:
db_list: >-
{{ textarea.split("\n") | select |
map("regex_replace", "^", "- {") |
map("regex_replace", "$", "}") |
join("\n") | from_yaml }}
管道中select
的设计旨在剥离任何空行(因为这些行不会是 True-thy)
推荐阅读
- python - PyCharm 新的 python 项目,带有带有虚拟环境的新解释器
- node.js - 在 Node.js 中创建一个持久的 bash shell 会话,知道命令何时完成,并读取和修改源/导出的变量
- tensorflow - RISC V 新库上的 TensorFlow Lite
- c# - 连接 SQL Server 数据库中的查询和 C# 中的 DBF
- reactjs - typescript:在没有默认值的情况下键入可选的更好方法?
- kubernetes - 使用 Kustomize/Kubernetes 中的 Generator 创建的 ConfigMap
- django-views - 在 Django 中接收多条错误消息
- java - 正确读取 gzip 文件
- java - 如何修复 Android Studio 区块链应用程序中的声明
- terraform - AWS EKS terraform tutorial (with assumeRole) - k8s dashboard error