使用pyyaml从yaml解析环境变量



我有以下yaml文件:

config:
username: admin
password: ${SERVICE_PASSWORD}
service: https://${SERVICE_HOST}/service

如何从环境中加载密码和主机值?

为了加载环境变量,您需要添加一些样板来帮助pyyaml查找和解析这些值:

import yaml, re, os
env_pattern = re.compile(r".*?${(.*?)}.*?")
def env_constructor(loader, node):
value = loader.construct_scalar(node)
for group in env_pattern.findall(value):
value = value.replace(f"${{{group}}}", os.environ.get(group))
return value
yaml.add_implicit_resolver("!pathex", env_pattern)
yaml.add_constructor("!pathex", env_constructor)
print(yaml.load("""
config:
username: admin
password: ${SERVICE_PASSWORD}
service: https://${SERVICE_HOST}/service
"""))

最新更新