Я новичок в средствах управления конфигурацией и развертывания. Я должен реализовать инструмент непрерывной доставки/непрерывного развертывания для одного из самых интересных проектов, которые я когда-либо делал.Как Docker и Ansible подходят для реализации Continuos Delivery/Continuous Deployment
Прежде всего, индивидуально, мне удобно с AWS
, я знаю, что такое Ansible
, логика его и ее цель. У меня нет такого уровня понимания Docker
, но у меня появилась идея. Я прошел через множество интернет-ресурсов, но я не могу получить общую картину.
То, что я боролся, это то, как они сочетаются друг с другом. Используя Ansible
, я могу управлять своей инфраструктурой как кодом; создание EC2
экземпляров, установка пакетов ... Я даже могу развернуть полное приложение, потянув его код, изменив конфигурационные файлы и запустив веб-сервер. Docker
- это инструмент, который упаковывает приложение и гарантирует, что его можно запускать везде, где вы его развертываете.
Мои проблемы:
Как Docker (или анзибль и Докер) проходят процесс непрерывной интеграции !?
Предположим, у нас есть репозиторий исходного кода, члены команды заканчивают работу над функцией, и они подталкивают свою работу. Дженкинс обнаруживает это, запускает все тестовые комплекты приемки/единицы измерения/интеграции, и, если они все прошли, он объявляет его как стабильную сборку. Как Docker подходит здесь? Я имею в виду, когда команда подталкивает их работу, Дженкинс должен вытащить источник файла Docker, закодированный в приложении, создать образ приложения, запустить контейнер и запустить все тесты против него или он запускает тесты классическим способом, и если все хорошо, тогда он создает изображение Docker из файла Docker и сохраняет его в закрытом месте? Если Дженкинс помечает последнее изображение, используя x.y.z, например !?
Docker конфигурации контейнеров:
Предположим, что мы образ построен Jenkins
хранится где-то, как справиться с развертыванием и то же изображение в различных условиях, и даже различные параметры конфигурации (ВХосты конфигурации, DB хосты, Очереди URL-адреса, конечные точки S3 и т. Д.). Каков наиболее гибкий способ решения этой проблемы без нарушения принципов Docker
? Поддерживаются ли эти конфигурации в изображении при его создании или при запуске контейнера на его основе, если да, то как они вставляются?
анзибль и Docker:
Ansible
обеспечивает Docker
модуль для управления Docker
контейнеров. Предполагая, что я решил проблемы, упомянутые выше, когда я хочу развернуть новую версию x.t.z моего приложения, я скажу Ansible
, чтобы вытащить это изображение из того места, где оно было сохранено, запустить контейнер приложения, чтобы как можно было ввести настройки конфигурации !? Должен ли Ansible записывать изображение Docker перед его запуском (это звучит безумно для меня) и использовать его шаблоны Jinja2 так же, как и классический хост !? Если нет, как это обрабатывается ?!
Извините, если это был долгий вопрос или я что-то напутал, но это мое мнение вслух. Я заблокирован в течение последних двух недель, и я не могу понять правильный рабочий процесс. Я хочу, чтобы это было ссылкой для будущих читателей.
Пожалуйста, очень полезно прочитать ваши впечатления и решения, потому что это похоже на общий рабочий процесс. Спасибо заранее. Буду признателен за любую оказанную помощь.
Ansible + Docker == Magic! Вот отличный пост в блоге: https://developer.rackspace.com/blog/ansible-and-docker/, а также раздел, посвященный Ansible + Docker в http://www.ansiblefordevops.com/ – Homer6