YAML широко используется для конфигурационных файлов во многих сервисах, таких как Docker compose, Kubernetes и CI/CD сервисы.
При написании YAML-конфигураций нам обычно приходится размещать много дублирующихся блоков в содержимом, что может вызвать проблемы с обслуживанием в будущем.
YAML предоставляет функции якоря и псевдонима, которые могут упростить дублирование блоков с помощью всего нескольких аннотаций.
Содержание
Использование
Поместите Anchor(&
), чтобы сначала отметить многострочный блок, а затем добавьте Alias(*
), чтобы сослаться на указанный якорь.
Пример
import json
from pprint import pprint
import yaml
yaml_string = """
---
common:
&common_keys # anchor
key1: 1
key2: 2
key3: 3
worker1:
<<: *common_keys # alias
worker2:
<<: *common_keys # alias
key3: 33333 # override if needed
"""
d = yaml.safe_load(yaml_string)
print(yaml.dump(d))
common:
key1: 1
key2: 2
key3: 3
worker1:
key1: 1
key2: 2
key3: 3
worker2:
key1: 1
key2: 2
key3: 33333
См. также
Apache Airflow предоставляет хорошую практику по использованию функций anchor и alais в файле Docker compose.