В настоящее время я использую следующую структуру:
hosts/development
hosts/production
hosts/group_vars/development/service1.yml
hosts/group_vars/development/service2.yml
hosts/group_vars/production/service1.yml
hosts/group_vars/production/service2.yml
hosts/group_vars/production/service3.yml
hosts/host_vars/dev1.yml
hosts/host_vars/prod1/something.yml
hosts/host_vars/prod1/something_else.yml
Запасы могли бы выглядеть следующим образом:
# hosts/development
dev1 ansible_ssh_host=dev1.example.com
dev2 ansible_ssh_host=dev2.example.com
[development]
dev1
dev2
[service1]
dev1
[service2]
dev2
[service3]
dev1
dev2
И для производства:
# hosts/production
prod1 ansible_ssh_host=prod1.example.com
prod2 ansible_ssh_host=prod2.example.com
[production]
prod1
prod2
[service1]
prod1
[service2]
prod2
[service3]
prod1
prod2
Это позволяет для некоторых хорошо комбинации. Используя ansible -i hosts
, я могу настроить таргетинг на все известные хосты. Я использую это, например, чтобы добавить все серверы в инвентарь в файл конфигурации мониторинга.
С помощью ansible -i hosts/development
Я могу ограничить команду на серверы разработки (или производства). Я делаю это, когда хочу протестировать новую конфигурацию в системе разработки, прежде чем применять ее к производству.
В настоящее время я использую эту структуру для примерно 25 серверов на трех разных этапах, и это работает очень хорошо для меня. У этого есть некоторые недостатки:
- Хотя в моем случае преимущества перевешивают эти недостатки. Мой самый большой страх случайно нацелен на все инвентаризации в каталоге хостов, забыв ограничить один из этапов. Это будет легче избежать, если запасы будут полностью раздельными.
- Кроме того, мне не нравится, когда вы перечислите все серверы в инвентаре снова в группах
development
или production
, потому что это избыточно и легко забыть.
- Я предполагаю, что если ваша система будет расти, это может стать немного запутанным, чтобы понять, откуда и в каком порядке загружаются переменные.
Это, как говорится, хорошо работает для меня, поэтому, возможно, это хорошо работает и для вас.
Можете ли вы привести пример того, что ты имеешь в виду? – ydaetskcoR