Упрощение дублирования блоков YAML с помощью якоря и псевдонима

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.

Оцените статью
devanswers.ru
Добавить комментарий