В настоящее время я пытаюсь найти лучший способ управления общими секретами между несколькими хостами.Я хочу указать эти секреты только в одном месте, а не в нескольких файлах и т. Д.
В частности, у меня есть роль, назначенная многим хостам.Я использую переменные со значениями по умолчанию и определенными переопределениями для настройки соответствующих файлов конфигурации - в значительной степени прямо из документации Ansible.
Однако для одного конкретного аспекта мне нужен общий секрет между парамииз хостов, например, hostA
поделится секретом с hostB
, но hostA
поделится другим секретом с hostC
.
Упрощение проблемы и сведение ее к коду, это выглядит примерно так:
Задача в playbook, которая будет запускаться на всех хостах:
- name: manage secrets
template: src=secrets.j2 dest=/etc/secrets owner=root group=root mode=0600
Шаблон
{% for secret in abc.secrets %}
secret {{ secret }}
{% endfor %}
Переменные
abc:
someAttribute: 123
secrets:
- 123
- 234
I 'Теперь я пытаюсь иметь только секреты на каждом хосте, которые ему нужны, вместо того, чтобы иметь все секреты на всех хостах (как в примере выше).
Моя идея примерно такая:
Наличие глобальной структуры с секретами и списком хостов, на которые она влияет, например,
secrets:
- secret: 123
hosts:
- hostA
- hostB
- secret: 234
hosts:
- hostA
- hostC
Установка переменных для определенных хостов с помощью set_fact
Это то, что в настоящее время не работает дляме.Ищите способы, как реализовать это и / или даже лучше подходить всем вместе.