
Интересно, какое решение будет хорошим для управления средой с комбинацией динамических и статических хостов, переменных и групп?
Я думаю о комбинации физических хостов в центре обработки данных с комбинацией определенных задач (физический узел базы данных) плюс хосты Proxmox, управляющие некоторыми динамическими виртуальными машинами, вместе с некоторыми облачными провайдерами для управления новыми виртуальными машинами в некоторых ситуациях, когда физической производительности недостаточно (пики производительности при передаче на аутсорсинг).
В этом случае - динамическая инвентаризация - это хорошая практика. Конечно, есть плагины для AWS, Hetzner и т. д. Но возможно ли объединить это со статическими записями?
Я создаю базу данных со всеми записями и скриптами, которые обновляют список облачных виртуальных машин по запросу в базе данных. Все динамические хосты вместе со статическими хостами и некоторыми групповыми переменными, переменными хостов хранятся в базе данных. И есть веб-сервис, который выводит динамический инвентарь JSON, который загружает скрипт python и который используется как динамический инвентарь в моих плейбуках.
Мой вопрос - я единственный с такой настройкой? Когда я думаю о компании с несколькими хостами VMWare вместе с динамическим числом виртуальных машин на этих хостах плюс некоторые другие физические системы, было бы "ясно", что должен быть какой-то "инструмент" или помощь для этой настройки. Но насколько я могу судить, есть либо статическая инвентаризация (YAML, INI), либо динамическая инвентаризация (JSON). Но каждый ли администратор разрабатывает свою собственную базу данных динамической инвентаризации? Или есть определенный программный "продукт" или "проект"? Или это "лучшая" практика иметь разные инвентаризации для "статической" и "динамической" среды?
решение1
Ansible выпустил несколько версийплагины инвентаризации. Да, вы можете объединить их как несколько -i
вариантов или указать каталог, содержащий несколько инвентарей.
Например, все это может находиться в каталогах inventory/stage/
и :inventory/prod/
- hcloud для Hetzner
- aws_ec2 для AWS
- YAML со статическим списком хостов
- Ваш индивидуальный сценарий инвентаризации
- сконструирован для генерации групп и переменных из выражений
Названия групп должны быть последовательными для определенного предмета, поэтому в пьесах можно использовать статические шаблоны.
Построенодовольно аккуратно. Используйте выражения Jinja на фактах из inventory или hosts для создания групп и vars. Например, вы можете захотеть, чтобы некоторые теги ec2, а также некоторые regex hostname были членами группы.
Если этого недостаточно, вы можете написать собственные плагины инвентаризации. Обычно они обращаются к одному API, скажем, если вы взламываете плагин инвентаризации Proxmox. Или откажитесь от множественной инвентаризации на стороне Ansible, найдите многооблачный инструмент, который вам подходит, и заставьте его выдавать JSON для инвентаризации.