Переносимые переменные записи в файл YAML
У меня есть специфическая структура переменных, которую я хочу получить из хранилища в файл yaml на моих хостах.
Давайте предположим такую структуру:
secrets:
psp1:
username: this
password: that
secret_key: 123
...
Мне нужно что-то вроде шаблона "generic" для вывода каких-либо "секретов" на данный момент, поскольку контент изменяется почти полностью на основе текущей среды.
Самое легкое решение, о котором я могу думать, - вывести всю структуру в шаблоне следующим образом:
# config/secrets.yml
{{ secrets | to_yaml }}
Но фильтр jinja2 to_yaml выполняет только "yamlify" на первом уровне, более глубокие вложения выводятся в json.
Могу ли я как-то обойти эту проблему? Есть ли более простой способ достичь того, что я хочу?
Спасибо за любую помощь!
Ответы
Ответ 1
- Как сказал jwodder, это действительно.
- Если вы используете
to_yaml
(вместо to_nice_yaml
), у вас довольно старая установка ansible, самое время обновить.
- Используйте
to_nice_yaml
Можно передать ваши собственные kwargs функциям фильтрации, которые обычно передают их вызову основного модуля python. Как и этот для вашего случая. Так что-то вроде:
{{ secrets | to_nice_yaml( width=50, explicit_start=True, explicit_end=True) }}
Единственная проблема в том, что вы не можете переопределить indent=4, allow_unicode=True, default_flow_style=False
Обратите внимание, что теперь indent
можно переопределить, по крайней мере, начиная с Ansible 2.2.0 (я использую его для отступа в 2 пробела, чтобы следовать стандартам кодирования для одного проекта).