【问题标题】:Convert yaml config file to environment variables将 yaml 配置文件转换为环境变量
【发布时间】:2022-11-28 15:40:06
【问题描述】:

给定如下所示的 yaml 配置文件:

key1:
   key11:value1
   key12:value2
key2:
   key21:value3

如何在 bash 脚本(最好使用 yq)中将其转换为以字符串为前缀的环境变量? env 的期望输出:

TF_VAR_key11=value1
TF_VAR_key12=value2
TF_VAR_key21=value3

【问题讨论】:

  • 该 YAML 无效。字典键值之间必须有空格。
  • 您是希望 yq 以这种方式设置环境变量(并且没有输出),还是希望 yq 以这种方式输出文本格式(例如,由 shell 解释)?
  • 我想让yq以格式化的方式输出,会在外面做出口

标签: yaml yq


【解决方案1】:

您首先要将 YAML 配置加载到内存中。

from yaml import loads

with open("config.yaml") as f:
    config = loads(f.read())

然后,遍历看起来也是字典的字典值。对于这些字典中的每一个,将 key=val 对写入新文件。

env_str = ""
for inner_dict in config.values():
    for key, val in inner_dict.items():
        env_str = f"TF_VAR_{key}={val}
"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2016-08-08
    • 1970-01-01
    相关资源
    最近更新 更多