Этот пост — просто реализация @ Endofcake’s статья . Я собираюсь показать реальный пример о том, как использовать методику обновления Rolling с EC2. Если вы хотите получить больше фона о разнице между обновленным обновлением и синим/зеленым, пожалуйста, проверьте его пост.
Использование террафора для нулевых обновлений обновления автоматической масштабирования в AWS | Александр Савчук | Середина
Александр Савчук · 25 августа 2018 · 7 мин прочитанные среды
Экстремальные методы прокатки впереди. Действовать с осторожностью.
Террафом может сделать синий/Брина, просто добавить create_before_destroy
в Блок жизненного цикла И террафору создаст ресурс синим/зеленым способом.
resource "azurerm_resource_group" "example" { # ... lifecycle { create_before_destroy = true } }
Другими, чтобы показать это обновление, я решил создать действительно простую веб-страницу, используя Packer, чтобы создать изображения.
Скорость вещи вверх с упаковщиком
Прежде чем мы погрузимся в то, как создавать обновления прокатки с террафом, давайте немного поговорим о Packer.
Hashicorp Упаковщик Целью создание автоматизированных изображений машин, что означает, что мы можем создавать сценарии для настройки изображений с нашим приложением внутри, устанавливая все зависимости, которые необходимо нашему применению.
В нашем примере мы используем Packer, чтобы построить очень простой HTTP-сервер. Я создал простой скрипт, который будет устанавливать веб-сервер Apache и создать веб-страницу с цветом фона спецификации (вы можете выбрать цвет, увлекательно не так ли?).
Чтобы обновить «версию» нашего приложения, просто измените переменную цвета любую цвет предпочтения. Цвет нашей веб-страницы по умолчанию красный.
variable "color" { default = "red" }
Я не буду введен в подробную информацию о Packer в этом посте, но в основном Packer создаст экземпляр EC2, выполнить Сценарии/Basic-website.sh
внутри него и сделайте снимок этого экземпляра, сохраняя его как Rolling_Update _ {{Timestamp}}
Отказ Выполнение этого сценария описана в Продавщик
блокировать.
Я знаю, что это не хорошее учебное пособие, но достаточно упаковщика.
Обновление прокатки с террафом
Ну вот веселая часть. Террафом не имеет возможности сделать это.
У террафора нет способа знать, живу ли ваше приложение, ни для проверки той текущей версии; Потому что это не было построено для этой цели.
Хотя мы можем настроить проверки здоровья на целевых группах и группах автоматического масштабирования, Terraform не заботится, если приложение будет здорово после завершения фазы применения.
Другими, чтобы создать обновление прокатки с террафом, мы собираемся использовать немного взлома … Мы собираемся использовать облачность!
Облакоформация дает автоматической масштабированию группы действительно крутая особенность, UpdatePolicy Отказ Это политика, которая срабатывает каждый раз, когда ASG обновляется, что означает, что если мы запустим новую версию шаблона запуска, мы можем вызвать нашу ASG для обновления его экземпляров.
Мы можем воспользоваться этой автоматизацией облака и смешать его в террафору!
ОК, Лукас, @endofcake Уже объясняет все это нам.
Меньше разговоров и больше кода.
Во-первых, клонировать этот репозиторий Git:
Souzaxx/Rolling-Update-Terraform
Пример кода для Rollingupdate с террафом и упаковщиком
Создайте нашу первую AMI HOTE внутри упаковщик
папка.
cd packer packer build .
Подожди, пока AMI не будет создан
После этого вернитесь к корню репозитория и нанесите террафору.
cd .. terraform init terraform apply
Чтобы проверить, что наша веб-страница работает и работает, получает DNS LoadBalancer от Terraborform Exputed Terraporm Exputed LB_DNS
и откройте его в вашем любимом браузере или просто сверните его Curl $ (Terraporm Exputa LB_DNS)
Отказ
Обновите изображение
Другое, чтобы проверить прогресс обновления, выполнить этот цикл в другом терминале:
while true; do curl $(terraform output lb_dns) sleep 1 done
Теперь создайте новую «версию» нашего приложения, выбрав цвет. Вы можете перезаписать переменную по умолчанию. -Var ‘ в упаковщик CLI.
cd packer packer build -var 'color=green' .
Подождите его завершения и примените террафору снова:
cd .. terraform apply
Мы можем проверить это lauchconfiguration
и облачность
Ресурсы изменились.
Подтвердите применение и проверьте контурную петлю, чтобы увидеть изменения в реальном времени.
Я надеюсь, что этот пост был полезен для ваших исследований в террафоре и в моем следующем посте, я хочу показать этот процесс с реальным приложением, таким как консул.
Чистить
terraform destroy --auto-approve
И удалить все AMI, созданные Packer:
Спасибо за ваше время и
Оригинал: «https://dev.to/souzaxx/rolling-update-ec2-with-terraform-13bf»