Как люди, использующие неизменяемую инфраструктуру, обрабатывают изменения конфигурации между своими различными средами? Я не могу придумать хороший способ создать один AMI для каждой роли и использовать его во всех средах.
Я имею в виду, как создать единый ami, который я могу развернуть для разработки, подготовки и производства, но который указывает на правильный ELB и т. д. для этой среды. На данный момент единственные варианты, которые я могу придумать, это:
- Создайте AMI для каждой среды и роли (рабочий веб-сервер, сервер приложений, промежуточный веб-сервер, ...). Похоже, это противоречит цели II, заключающейся в том, чтобы один и тот же образ распространялся во всех средах.
- Постройте почти полный AMI и выполните финальную настройку после его запуска, но перед добавлением в ELB. Это кажется близким, но мне кажется, что чего-то не хватает.
Есть ли возможность передать набор параметров в AMI при его создании или что-то еще? Как другие используют неизменяемую инфраструктуру?
Спасибо.
решение1
ВBoxfuseмы живем и дышим неизменяемой инфраструктурой. Мы рекомендуем комбинацию следующих двух подходов:
- Сохраните как можно больше конфигураций для всех сред непосредственно в AMI (и автоматически выберите правильный набор во время выполнения)
- Передайте оставшиеся настройки как экземплярданные пользователяскрипт оболочки (cloud-init), который экспортирует окружение со значениями, необходимыми для этой машины/среды