Контейнеризация с применением Ansible 2.

Эйрик Ренцо

 

Первая публикация на английском языке: ноябрь 2017

Ссылка на продукт: 1051217

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

При подготовке этой книги были предприняты все усилия чтобы гарантировать точность представленной информации. Тем не менее, информация, содержащаяся в этой книге, продаётся без гарантии в явном или неявном виде. Ни авторы, ни Packt Publishing, ни их дилеры и дистрибьюторы не будут нести ответственность за любые убытки, вызванные или предположительно вызванные прямо или косвенно этой книгой.

Packt Publishing пыталась предоставить информацию о товарных знаках обо всех компаниях и продуктов, упомянутых в данной книге для надлежащего использования капиталов. Тем не менее, Packt Publishing не может гарантировать точность этой информации.

Опубликовано Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK

ISBN 978-1-78829-191-0

www.packtpub.com

2018-01-15

 Состав исполнителей

Издания на английском языке
Автор
Эйрик Ренцо
Рецензент
Микаэль Брайт
Редактор выпуска
Вихин Борича
Редактор
Херамб Бхавсар
Редактор разработки содержания
Дивайка Баттайк
Технический редактор
Прачи Савант
Литературный редактор
Safis Editing
Координатор проекта
Джуди Джоус
Корректор
Safis Editing
Составитель указателя
Техал Дарувейл Сони
Графика
Таня Дутта
Координатор производства
Мелвин Дса
Изготовитель переплета
Шантану Н. Загаде

 Об авторе

Эйрик Ренцо

 Рецензент

 www.PacktPub.com

 Содержание

Предисловие
Что охватывает эта книга
Что вам нужно для этой книги
Для кого эта книга
Соглашения
Обратная связь с читателями
Поддержка пользователей
Загрузка цветных изображений этой книги
Опечатки
Незаконное тиражирование
Вопросы
Глава 1. Построение контейнеров с помощью Docker
DevOps и фундаментальный сдвиг ландшафта ИТ
Разработка вручную монолитных приложений
Введение в автоматизацию
Виртуализация приложений и инфраструктуры
Контейнеризация приложений и инфраструктуры
Оркестрация контейнеризованных приложений
Построение вашего первого контейнера Docker
Установка лабораторной среды
Собственно установка лабораторной среды
Запуск вашего первого контейнера Docker
Построение вашего первого контейнера
Dockerfiles
Управление жизненным циклом контейнера
Ссылки
Выводы
Глава 2. Работа с контейнером Ansible
Введение в контейнеры Ansible и архитектуру микрослужб
Быстрое введение в Docker Compose
Рабочий поток контейнеров Ansible
Быстрый старт контейнера Ansible
init контейнер Ansible
build контейнер Ansible
run контейнер Ansible
destroy контейнер Ansible
Выводы
Глава 3. Ваш первый проект контейнеров Ansible
Что такое роли Ansible и включаемые контейнером роли?
Роли в Galaxy Ansible
Роль контейнера Ansible NGINX
Запуск нового проекта
Установка самой роли NGINX
Исполнение роли NGINX
Изменение роли NGINX
Исполнение изменённой роли
Продвижение проекта в хаб Docker
Выводы
Глава 4. Что такое роль?
Индивидуализация ролей при помощи контейнеров Ansible
Синтаксис YAML
Модули Ansible
Краткий обзор MariaDB
Установка роли контейнера Ansible
Что из себя представляет роль, включаемая контейнером?
Инициализация проекта MariaDB и роли container.yml
Написание включаемой контейнером роли
roles/mariadb_role/meta/container.yml
tasks/main.yml
Разрушение задачи (main.yml)
tasks/initialize_database.yml
Разрушение задачи (initialize_database.yml
templates/my.cnf.j2
Построение управляемой контейнером роли
Индивидуализация определённой управляемой контейнером роли
variable_files/dev.yml
variable_files/test.yml
variable_files/prod.yml
container.yml
Ссылки
Выводы
Глава 5. Контейнеры в масштабе с применением Kubernetes
Краткий обзор Kubernetes
Приступая к работе с облачной платформой Google
Разработка приложения в Kubernetes с помощью kubectl
Объяснение ресурсов Kubernetes
Выставление служб Kubernetes
Масштабирование коконов Kubernetes
Создание оснащений с помощью манифестов Kubernetes
Создание служб с помощью манифестов Kubernetes
Ссылки
Выводы
Глава 6. Управление контейнерами с применением OpenShift
Что такое OpenShift?
Локальная установка Minishift
Установка исполняемых файлов Minishift
Развёртывание контейнеров через веб интерфейс
Уловки веб интерфейса пользователя OpenShift
Введение в CLI OpenShift
OpenShift и контейнер Ansible
Ссылки
Выводы
Глава 7. Развёртывание вашего первого проекта
Обзор развёртывания ansible-container
Развёртывание ansible-container
Оснащение контейнерами Kubernetes
Оснащение контейнерами OpenShift
Ссылки
Выводы
Глава 8. Построение и развёртывание проекта со множеством контейнеров
Определение сложных приложений, применяющих сетевую среду Docker
Рассмотрение проекта контейнера django-gulp-nginx Ansible
Построение проекта django-gulp-nginx
Сопоставление конфигурации разработки и промышленного применения
Развёртывание проекта в OpenShift
Ссылки
Выводы
Глава 9. Продолжим работу с контейнерами Ansible
Хитрости написания приложений ролей и контейнеров
Применение полного синтаксиса YAML
Использование модулей Ansible
Построение мощных плейбуков оснащения с применением ядра Ansible
Поиск неисправностей контейнерных приложений
Создание конвейера построения с применением Jenkins или TravisCI
Совместное использование ролей и приложений в GitHub и Galaxy Ansible
Применяем контейнеры везде!
Ссылки
Выводы
Указатель

 Предисловие

На протяжении последних нескольких лет мир ИТ увидел кардинальный сдвиг в способах того как разрабатываются и развёртываются программные приложения. Восход автоматизации, облачных вычислений и виртуализации основополагающим образом подвинул представления о том, как системные администраторы, разработчики программных средств и организации рассматривают инфраструктуру целиком и управляют ею. Всего несколько лет назад для многих в ИТ индустрии представлялось невероятным позволить критически важным приложениям исполняться за пределами стен их корпоративного центра обработки данных. Однако в наши дни имеется множество организаций, которые уже перенесли инфраструктуру в облачные службы, такие как AWS, Azure и Google Compute в усилиях сберечь время и отсечь стоимость накладных расходов, связанных с работой физической инфраструктуры. Абстрагируясь от оборудования компании могут сосредоточиться на том, что на самом деле имеет значение - программных приложениях, которые обслуживают их пользователей.

Следующая приливная волна внутри сферы ИТ формально получила начало в 2013 с первоначальным выпуском механизма контейнеров Docker. Docker позволил пользователям легко упаковывать программное обеспечение в небольшие, повторно используемые исполнения сред, именуемые контейнерами, которые получили усиление функциональности в имеющемся ядре Linux при помощи применения LXC (контейнеров Linux). Применяя Docker, разработчики могут создавать приложения микрослужб, которые могут быстро строиться и с гарантией работать в любой среде, а также получать преимущества повторного применения эталонов служб (образов контейнеров), которые могут управляться версиями. По мере того, как всё больше и больше пользователей приспосабливаются к рабочим потокам контейнеров, начинают появляться зазоры в исполнении. Хотя Docker был великолепен в построении и исполнении контейнеров, он борется за то, чтобы быть реальным повсеместным решением для всего жизненного цикла контейнеров.

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

Данная книга послужит руководством для работы с конкретным проектом контейнеров Ansible. Моей целью к концу книги является именно то, чтобы вы имели твёрдое понимание того, как работают контейнеры Ansible и как применять всю мощь множества их возможностей для построения надёжного стека программных контейнеров начиная с разработки на всём пути до полного промышленного внедрения.

 Что охватывает эта книга

Глава 1. Построение контейнеров с помощью Docker Вводит читателя в курс того, что такое Docker, как он работает и основы применения Dockerfiles и Docker Compose. Эта глава закладывает основные фундаментальные понятия для начала изучения того как применять контейнеры Ansible.

Глава 2. Работа с контейнером Ansible изучает рабочий поток контейнера Ansible. Эта глава знакомит читателя с ядром понятий контейнеров Ansible, таких как построение (build), исполнение (run) и удаление (destory).

Глава 3. Ваш первый проект контейнеров Ansible снабжает пользователя опытом построения простого проекта контейнеров Ansible с применением роли сообщества, доступной в Galaxy Ansible.

Глава 4. Что такое роль? даёт пользователю представление о как писать индивидуальные управляемые контейнером роли для их использования в контейнерах Ansible. Всеобъемлющей целью данной главы является написание такой роли, которая построит полностью функционирующий образ контейнера MariaDB в рабочей области. К окончанию данной главы пользователь должен иметь основные навыки написания плейбуков Ansible с применением надлежащего стиля и синтаксиса.

Глава 5. Контейнеры в масштабе с применением Kubernetes предоставляет пользователю обзор платформы Kubernetes и основы её функциональности. В этой главе пользователь получит возможность создать кластер Kubernetes со множеством узлов в Облаке Google и исполнять контейнеры внутри него.

Глава 6. Управление контейнерами с применением OpenShift вводит читателя в платформу Redhat OpenShift. Данная глава снабдит пользователя теми шагами, которые необходимы для развёртывания локального кластера OpenShift при помощи Minishift и исполнять в нём контейнерные рабочие нагрузки. Эта глава также взглянет на имеющиеся ключевые отличия между Kubernetes и OpenShift, даже несмотря на то, что сами их архитектуры и основы схожи.

Глава 7. Развёртывание вашего первого проекта заглянет вглубь окончательной команды рабочего потока контейнеров Ansible - deploy. Применяя deploy читатель получит из первых рук опыт развёртывания предварительно построенных проектов в Kubernetes и OpenShift с применением контейнеров Ansible в качестве повсеместного инструментария рабочего потока.

Глава 8. Построение и развёртывание проекта со множеством контейнеров рассматривает как могут применяться контейнеры Ansible для некоторого проекта, который получает преимущества применения более чем одного контейнеров. Для полного понимания этой темы критически важным является введение в сетевые среды контейнеров и настройка контейнеров для доступа к сетевым ресурсам. Данная глава даст читателю возможность построить и развернуть проект множества контейнеров с применением контейнеров Django, Gulp, NGINX и PostgreSQL.

Глава 9. Продолжим работу с контейнерами Ansible предоставит читатель некую идею последующих шагов, которые следует предпринять далее после освоения рабочего потока контейнеров Ansible целиком. Изучаемые в данной главе темы содержат интеграцию контейнеров Ansible с инструментами CCID, а также совместное применение проектов в Galaxy Ansible.

 Что вам нужно для этой книги

Данная книга предполагает наличие от начального до среднего опыта работы с операционной системой Linux, развёртывания приложений и управления серверами. Данная книга проведёт вас через этапы необходимые для возведения среды полностью работающей лаборатории в вашем локальном ноутбуке для её быстрого поднятия и исполнения при помощи окружений Virtualbox и Vagrant. Прежде чем начать, вам будет полезно получить установленными на вашем компьютере клиентов командной строки Virtualbox, Vagrant и Git. Для исполнения данной среды в её полной спецификации необходимо выполнить или превзойти следующие требования к системе:

  • ЦПУ с двумя ядрами (Intel i5 Core или эквивалент)

  • Оперативная память: 8 ГБ

  • Дисковое пространство: 80 ГБ

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

  • VirtualBox 5.1 или выше

  • Vagrant 1.9.1 или выше

  • Текстовый редактор, для изменения файлов YAML (предпочтительны Atom GitHub или VIM)

Для установки всех этих пакетов понадобится соединение c Интернетом:

 Для кого эта книга

Эта книга тем, кто в настоящее время работает в качестве системного администраторов, инженеров DevOps, технических архитекторов систем (или аналогичных ролей) для быстрого поднятия и исполнения рабочего потока контейнеров Ansible. Также будет полезным, если такой читатель уже имеет базовые понятия о Docker, Ansible или прочих средствах, связанных с автоматизацией платформ прежде чем он приступит к чтению данной книги, хотя это и не обязательно. Я надеюсь, что всякий пользователь получит прочное понимание этих основ в процессе чтения данной книги. Окончательной целью является помочь читателю получить солидную основу в том, как контейнеры Ansible могут ускорять построение, исполнение, тестирование и развёртывание контейнерных приложений в диапазоне сред от окружений разработки до промышленных.

 Соглашения

В данной книге вы найдёте ряд текстовых стилей, которые делают разницу между различными видами информации. Здесь мы приводим некоторые примеры этих стилей и объяснение их назначения.

Кодовые слова в тексте, имена таблиц базы данных, имена папок, имена файлов, расширения файлов, имена путей, модели URL-адресов, ввод пользователя, и регулировки Twitter представлены следующим образом: "Мы можем включать другие содержания при помощи директивы include".

Блок кода устанавливается следующим образом:


---
- name: Create User Account
  user:
    name: MyUser
    state: present

- name: Install Vim text editor
  apt:
    name: vim
    state: present
 	   

Любой ввод командной строки или её вывод записываются следующим образом:


ubuntu@node01:/tmp$ ansible-galaxy init MyRole --container-enabled 
- MyRole was created successfully
 	   

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

[Замечание]Замечание

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

[Совет]Совет

Советы и ловкие приёмы возникают таким образом.

 Обратная связь с читателями

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

Для отправки обычного отклика просто пошлите электронное письмо на адрес feedback@packtpub.com с упоминанием заголовка книги в теме вашего сообщения.

Если у вас существует тема, в которой у вас имеется опыт и вы заинтересованы либо в написании, либо во вкладе в книгу, обратитесь к руководству по адресу www.packtpub.com/authors.

 Поддержка пользователей

Теперь, когда вы являетесь гордым владельцем книги Packt, у нас есть целый ряд моментов для помощи вам в получении максимальной выгоды от вашей покупки.

 Загрузка цветных изображений этой книги

Мы дополнительно снабжаем вас файлом PDF, который содержит цветные изображения экранных снимков/ схем, использованных в данной книге. Цветные изображения помогут вам лучше понять изменения в выводе. Вы можете загрузить этот файл по адресу: https://www.packtpub.com/sites/default/files/downloads/ContainerizationwithAnsible2_ColorImages.pdf.

 Опечатки

Хотя мы и предприняли все меры чтобы обеспечить точность нашего содержимого, ошибки всё- таки возможны. Если вы обнаружили ошибку в нашей книге - возможно, ошибку в тексте или в коде - мы будем признательны если вы сообщите об этом нам. Сделав это, вы можете предостеречь остальных читателей от разочарования и помочь нам улучшить последующие версии данной книги. Если вы обнаружили ошибку, пожалуйста, сообщите о ней посетив www.packtpub.com/submit-errata, выбрав вашу книгу, кликнув на ссылку Errata Submission Form, и заполнив подробности найденной вами ошибки. Когда ваша ошибка будет проверена, вы получите уведомление и ошибка будет выложена на наш веб- сайт или добавлена в какой- нибудь перечень существующих ошибок с заголовком раздела Errata.

Для просмотра ранее выявленных ошибок посетите www.packtpub.com/books/content/support и введите название нужной книги в поле поиска. Необходимая информация появится в разделе Errata.

 Незаконное тиражирование

Пиратство, защищённых авторским правом материалов в Интернете является постоянной проблемой во всех средствах массовой информации. В Packt мы подходим к защите наших авторских прав и лицензий очень серьёзно. Если вы столкнётесь с какой-либо незаконной копией наших работ в любой форме в Интернете, пожалуйста, предоставьте нам сразу адрес местонахождения или имя веб-сайта, чтобы мы могли принять меры. {Прим. пер.: Согласно закону об авторском праве РФ, авторские права на перевод принадлежат авторам этого перевода. Данным переводом, по нашему мнению, мы служим популяризации основных стратегических направлений развития тем Packt. В случае наличия конструктивных предложений, готовы к тесному сотрудничеству.}

Пожалуйста, обратитесь по адресу copyright@packtpub.com со ссылкой на материалы содержащие признаки нарушения авторских прав.

Мы выражаем вам признательность в защите наших авторов и нашей возможности доносить до вас имеющего ценность содержимого.

 Вопросы

Если у вас есть проблемы по любым сторонам данной книги, вы можете контактировать с нами по адресу questions@packtpub.com и мы предпримем все меры в отношении ваших проблем.