У меня есть следующий файл 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
"""))