@catquistador

Как сделать мердж инвентарей для составления словаря?

Всем привет!
Есть необходимость реализовать аналог json-шаблонизатора/kustomize на ansible (почему ansible, хотя кажется, что он тут лишний: потому, что это только часть процесс и "слева" и "справа" от этой задачи вполне типичные для ansible таски). Для этого мне нужна пачка словарей, где один из них - базовый, определяющий все свойства, а пачка - env-specific, которые содержат в себе только некоторые свойства и должны их (и только их) оверрайдить

Пример:
Полный инвентарь 1
appname:
    group: "somegroup" 
    meta: "some_meta_stuff"
    geo:
        eu:
            count:
            ..
        ru:
            count:
            ..
    some_more_props:
        netsted_prop: ...

Патч из словаря инвентарь 2, где я ожидаю вытеснения ru/eu и добавления jp
appname:
    geo:
        jp:
            count:
			..


Сейчас с дефолтной стратегией `replace` у меня задача падает, т.к инвентарь 2 вытесняет инвентарь 1 и у объекта отсутствуют поля, описанные в инвентаре 1. если менять на merge, то закономерно все поля инв 1 и инв 2 мерджатся и у результирующего объекта из примера выше будут все 3 geo
Есть способ сделать replace if exists или что-то похожее, удовлятворяющее моим целям?
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы