IT-Planet_Network_Nosenko_stage2
Демонстрация функционала:
Для ручного запуска на сервере средствами docker-compose:
docker-compose up -d
Результатом запуска будет следующее:
- Сборка docker образа на базе описанного Dockerfile;
- Запуск двух контейнеров из собранного образа:
- flask-app1
- flask-app2
- Запуск контейнера:
- load-balancer
Результат запуска:
при обновлении страницы можно увидить работу балансировщика нагрузки, т.к. тестовое приложение flask выводит на экран имя хоста на котором оно запущено:
Для автоматизированного запуска на сервере средствами docker-compose и ansible:
Например: есть "чистая" виртуальная машина созданная в Yandex Cloud на базе ОС Debian:
С рабочего места "разработчика" достаточно выполнить сделующую команду:
-
при условии того, что АРМ "разработчика" настроено должным образом (установлен ansible, в организации корректно настроен DNS и записи обновляются автоматически);
- ну или "разработчик" внёс соответствующую запись в файл "hosts" для идентификации созданной ВМ по имени, т.к. в inventory для ansible ожидается доступ по имени;
ansible-playbook playbook.yml
Результат работы данного playbook-сценария получается следующий:
-
на удалённой машине выполняется установка docker (в playbook вызывается роль docker);
-
на удалённой машине выполняется установка docker-compose (в playbook вызывается роль docker-compose);
-
перемещаются все необходимые файлы для запуска приложения;
-
генерируется самоподписанный сертификат для доступа к приложению по HTTPS;
-
выполняется запуск стека контейнеров описанных в docker-compose.yaml.
Таким образом, после успешного запуска playbook-сценария в браузере можно проверять работоспособность приложения:
- тестовое приложение flask выводит на экран имя хоста на котором оно запущено;
при обновлении страницы - можно проверить работоспособность балансировщика нагрузки:
Также можно наблюдать корректный доступ по протоколу HTTPS:
- P.S. в контейнера который настроен в качестве балансировщика - реализован редирект с HTTP на HTTPS: