Я новичок в средствах управления конфигурацией и развертывания. Я должен реализовать инструмент непрерывной доставки/непрерывного развертывания для одного из самых интересных проектов, которые я когда-либо делал.
Прежде всего, индивидуально, мне комфортно с AWS
, я знаю, что такое Ansible
, логика этого и его цель. У меня нет одинакового уровня понимания Docker
, но я понял эту идею. Я прошел через множество интернет-ресурсов, но я не могу получить общую картину.
То, с чем я боролся, - это то, как они сочетаются. Используя Ansible
, я могу управлять своей инфраструктурой как кодом; создание экземпляров EC2
, установка пакетов... Я даже могу развернуть полное приложение, потянув его код, изменив конфигурационные файлы и запустив веб-сервер. Docker
- это сам инструмент, который упаковывает приложение и гарантирует, что его можно запустить везде, где вы его развертываете.
Мои проблемы:
Как Docker (или Ansible и Docker) расширяют процесс непрерывной интеграции!?
Предположим, что у нас есть репозиторий исходного кода, члены команды заканчивают работу над функцией, и они продвигают свою работу. Дженкинс обнаруживает это, запускает все тестовые комплекты приемки/единицы измерения/интеграции, и, если они все прошли, он объявляет его как стабильную сборку. Как Docker подходит здесь? Я имею в виду, когда команда подталкивает их работу, Дженкинс должен вытащить источник файла Docker, закодированный в приложении, создать образ приложения, запустить контейнер и запустить все тесты против него или он запускает тесты классическим способом, и если все хорошо, тогда он создает изображение Docker из файла Docker и сохраняет его в закрытом месте? Если Дженкинс пометит конечное изображение, например, x.y.z!?
Конфигурация контейнеров докеров:
Предположим, что у нас есть изображение, построенное где-то Jenkins
, как обрабатывать развертывание одного и того же изображения в разных средах и даже различные параметры конфигурации (конфигурация Vhosts, узлы базы данных, URL-адреса очередей, конечные точки S3 и т.д.). ) Каков самый гибкий способ решения этой проблемы без нарушения принципов Docker
? Поддерживаются ли эти конфигурации в изображении при его создании или при запуске контейнера на основе его, если да, то как они вставляются?
Несвязанный и докер:
Ansible
предоставляет модуль Docker
для управления контейнерами Docker
. Предполагая, что я решил проблемы, упомянутые выше, когда я хочу развернуть новую версию xtz моего приложения, я рассказываю Ansible
, чтобы вытащить это изображение из того места, где оно было сохранено, запустите контейнер приложения, поэтому, как ввести параметры конфигурации!? Нужно ли Ansible регистрировать изображение Docker, прежде чем оно запустится (это звучит безумно для меня) и используйте его шаблоны Jinja2 так же, как и классический хост!? Если нет, как это обрабатывается?!
Извините, если это был долгий вопрос или я что-то напутал, но это мое мнение вслух. Я заблокирован в течение последних двух недель, и я не могу понять правильный рабочий процесс. Я хочу, чтобы это было ссылкой для будущих читателей.
Пожалуйста, очень полезно прочитать ваши впечатления и решения, потому что это похоже на общий рабочий процесс. Заранее спасибо. Буду признателен за любую оказанную помощь.