Проект модуля #2

Деплой Docker-образов с помощью Ansible

DevOps для программистов

Автоматизация раскатывания контейнеризированного приложения на кластер машин в облаке

2-4
недели

Цель

Создание веб-сервиса — это не только программирование, код и тестирование. Когда приложение готово, разработчики переходят на следующий этап: делают приложение доступным для пользователей. Для этого они разворачивают окружение и настраивают инфраструктуру: веб-серверы, кластеры баз данных, балансировщики нагрузки и сервисы мониторинга.

Часто инфраструктура сайта располагается на одном сервере. Обычно новый сервер содержит только операционную систему и предустановленные программы. Чтобы запустить приложение, нужно пройти еще много шагов: выбрать стек технологий, подобрать необходимые дополнительные пакеты и установить их.

Эту сложную задачу можно выполнить вручную, если речь идет об одном сервере. Но в сложных ситуациях количество серверов измеряется тысячами. Тогда не обойтись без инструментов автоматизации — Docker и Ansible. Они автоматизируют настройку и деплой серверов, сводя всю работу к запуску одной команды в терминале. С помощью Ansible вы сможете настраивать несколько серверов одновременно, управлять конфигурацией через код, отслеживать изменения через git и подключать других членов команды к управлению инфраструктурой.

Описание

Чтобы выполнить этот проект, студенты создают инфраструктуру на облачном хостинге (DigitalOcean, Linode, Yandex Cloud) — это единственное, что придется сделать руками. Дальше вы будете настраивать серверы и деплоить приложения автоматически только с помощью Ansible. Особое внимание в проекте мы уделили автоматизации деплоя на созданной инфраструктуре. В качестве приложения используется образ с Redmine. Готовый проект будет доступен на собственном домене в интернете.

Наставники

Аватар наставника Алексей Гонтаренко
Алексей Гонтаренко
PM в течение почти трех лет в Московской школе программистов, курировал разработку внутренней LMS и менеджерил инфраструктуру школы. Занимался выдачей доменных имен, поднятием серверов и конфигурацией. Участвовал в разработке внутреннего CI/CD, перенес в docker несколько внутренних сервисов. Решал вопросы защиты платформы от DDoS. В настоящее время — DevOps-инженер в IT-компании, занимающейся разработкой мобильных сервисов Москвы.
Аватар наставника Илья Подвольских
Илья Подвольских
DevOps-инженер, имеет опыт работы с Windows Server и Linux. Сопровождение, настройка CI/CD (GitLab, Jenkins, Ansible). Настройка окружения для разработчиков (Docker, Docker Compose). Мониторинг (zabbix, prometheus, grafana). Тестирование (Python, Selenium, Git). Наставничает в Хекслете, чтобы делиться знаниями и прокачивать soft skills
Аватар наставника Михаил Краев
Михаил Краев
Занимется программированием с 2016 года. Начинал карьеру с микропроцессорного программирования, после чего разрабатывал алгоритмы движения для промышленных манипуляторов. Пробовал себя в веб-разработке и разработке десктопных приложений. Опыт на разных стеках позволил прийти к сфере DevOps.
Сколько стоят проекты?

Проекты входят в стоимость обучения на любом плане: самостоятельном, групповом и индивидуальном. Дополнительно платить не нужно.

Зачем проходить проекты?

Проекты дают опыт разработки в реальной среде. Проходите каждый проект сразу после изучения курсов, которые стоят в учебном плане перед ним, — это отличный способ глубже разобраться в материале.

Проекты — портфолио программиста. Их код останется в вашем аккаунте на GitHub и будет преимуществом при поиске работы.

Чтобы узнать о том, что такое проекты и в чём их польза, прочитайте нашу статью «Анатомия проектов Хекслета».

Что делать, если возникли трудности во время выполнения проекта?

Задавайте вопросы в разделе «Обсуждение» на странице шага, на котором возникли трудности, или вашему наставнику. Изучите вопросы других студентов в «Обсуждениях»: там собрана большая база знаний, ей можно и нужно пользоваться. Попросите о помощи в нашем Slack-чате в канале #hexlet-projects.

Кто проверяет проекты?

Автоматизированные тесты и линтер. В групповом и индивидуальном форматах наставник дополнительно проверит то, что тестами проверить невозможно (архитектуру проекта, правильность именования, удачность решений), и проведёт код-ревью, чтобы сделать проект ещё качественнее.

У меня другой вопрос

Нажмите на виджет в правом нижнем углу экрана и поищите ответ в нашей справке. Или сразу пишите на support@hexlet.io — вам ответит живой человек из команды Хекслета.