, Полное руководство Ansible, 4 изд.

Полное руководство Ansible, 4 изд.

Джеймс Фриман и Джесс Китинг

 

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

Второе издание на английском языке: Май 2017

Третье издание на английском языке: Март 2019

Четвёртое издание на английском языке: Декабрь 2021

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

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

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

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

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

Livery Place

35 Livery Street

Birmingham B3 2PB, UK

ISBN-13 978-1-80181-878-0

www.packtpub.com

2021-12-19

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

Авторы
Джеймс Фриман
Джесс Китинг
Управляющий группой продуктов
Рауль Наир
Управляющий изданием продута
Мита Райджайни
Главный редактор
Сангита Паркаястха
Редактор разработки содержания
Найхар Кэйпэйдия
Технический редактор
Шрутхи Шетти
Литературный редактор
Safis Editing
Координатор проекта
Шэйган Сайни
Корректор
Safis Editing
Составитель указателя
Манджу Эйрэйсан
Технолог
Джьёути Чаухан

 Об авторах

Джеймс Фриман является опытным консультантом ИТс более чем 20 летним опытом в данной отрасли технологии. Он Ansible, постоянным участником и пропагандистом. У него более 8 лет непосредственного опыта решения реальных корпоративных проблем в производственных средах с применением Ansible, частое представление Ansible как новой технологии для предприятий и технических директоров. Кроме того, он является автором и организатором индивидуальных семинаров и тренингов по Ansible, а также выступал на международных конференциях и встречах по Ansible.

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

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

 Рецензент

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

 www.PacktPub.com

 Предисловие

.

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

Глава 1. Архитектура системы и проектирование Ansible

Глава 2. Миграция с более ранних версий Ansible

Глава 3. Защита ваших ключей безопасности в Ansible

Глава 4. Ansible и Windows - не только для Linux

Глава 5. Корпоративное управление инфраструктурой при помощи AWX

Глава 6. Высвобождение всей мощи шаблонов Jinja2

Глава 7. Условия управления задачами

Глава 8. Компоновка повторно используемого содержания и ролей Ansible

Глава 9. Устранение неисправностей Ansible

Глава 10. Расширение Ansible

Глава 11. Минимизация времени простоя и накатывания развёртываний

Глава 12. Предоставление инфраструктуры

Глава 13. Автоматизация сетевой среды

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

Чтобы следовать всем предоставляемым этой книгой примерам, вам понадобится доступ к вычислительной платформе, способной исполнять Ansible. В настоящее время Ansible может работать на любой машине с установленным на ней Python 2.6 или 2.7 (Windows не поддерживается в качестве управляющей машины). Это включает в себя Red Hat, Debian, CentOS, OS X, любые из BSD и тому подобное.

Данная книга применяет выпуск Ansible 2.2.x.x.

Инструкции по установке Ansible можно найти на http://docs.ansible.com/ansible/intro_installation.html.

Некоторые примеры использования Docker, инструкции по установке Docker версии 1.12.6 могут быть найдены на http://www.docker.com/community-edition.

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

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

 Соглашения

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

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

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


- name: query sessions
  command: /sbin/iscsiadm –m session
  register: sessions
  failed_when: sessions.rc not in (0, 21) 	   

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

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


$ source ./hacking/env-setup
       

Новые термины и важные слова отображаются жирным шрифтом. Слова, которые вы видите на экране, например, в меню или блоках диалогов появляются в тексте следующим образом: "Переместитесь в Networking support | Networking options | 802.1d Ethernet Bridging и выберите либо Y для компиляции всей функциональности моста в данном ядре, либо M для компиляции его в виде отдельного модуля."

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

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

[Предостережение]Предостережение

.

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

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

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

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

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

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

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

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

 Загрузка примеров кода

Вы можете загрузить файлы примеров кода по адресу из своей учётной записи: http://www.packtpub.com. Если вы приобрели книгу где- либо ещё, вы можете посетить http://www.packtpub.com/support и зарегистрироваться для получения этих файлов по электронной почте непосредственно на свой адрес.

Вы можете загрузить эти файлы с кодом выполнив следующие шаги:

  1. Зарегистрируйтесь на нашем вебсайте при помощи своего адреса электронной почты и пароля.

  2. Переместите указатель мыши на закладку SUPPORT в верхней части.

  3. Кликните по Code Downloads & Errata.

  4. Введите название книги в блок Search.

  5. Выберите книгу для которой вы ищете для загрузки файлы исходного кода.

  6. В ниспадающем меню выберите где вы приобрели эту книгу.

  7. Кликните по Code Download.

Вы также можете загрузить фалы кодов кликнув по кнопке Code Files вебстраницы на вебсайте Packt Publishing. Доступ к данной странице может быть получен путём ввода названия книги в блоке Search. Отметим, что вы должны быть зарегистрированы со своеЙ учётной записью Packt.

После загрузки убедитесь, пожалуйста, что вы раззиповали или раскрыли эту папку при помощи самой последней версии:

  1. WinRAR / 7-Zip для Windows

  2. Zipeg / iZip / UnRarX для Mac

  3. 7-Zip / PeaZip для Linux

Пакет с кодом для данной книги также размещён на GitHub по адресу https://github.com/PacktPublishing/Mastering-Ansible-Second-Edition. У нас также имеются прочие наборы из нашего богатого каталога книг и видео доступные на https://github.com/PacktPublishing/. Следите за ними!

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

Также мы снабжаем вас неким PDF файлом, который имеет цветные изображения применяемых в данной книге снимков экрана/ схем. Эти цветные изображения помогут вам лучше понять все изменения в имеющемся выводе. Вы можете загрузить этот файл с https://www.packtpub.com/sites/default/files/downloads/9781789951547_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 и мы предпримем все меры в отношении ваших проблем.

 Содержание

Предисловие
Что охватывает эта книга
Что вам нужно для этой книги
Для кого эта книга
Соглашения
Обратная связь с читателями
Поддержка пользователей
Загрузка кодов примеров
цветных изображений данной книги
Опечатки
Незаконное тиражирование
Вопросы
Часть 1. Обзор и основы Ansible
Глава 1. Архитектура системы и проектирование Ansible
Технические требования
Версии и конфигурации Ansible
Разбор учёта ресурсов и исходных данных
Статичный учёт ресурсов
Порядок учёта
Переменные данные учёта ресурсов
Динамическая инвентаризация
Добавления учёта ресурсов времени исполнения
Ограничения учёта ресурсов
Синтаксический разбор плейбуков
Порядок операций
Допущения относительных путей
Директивы поведения воспроизведения
Стратегии исполнения
Выбор хоста для воспроизведений и задач
Имена воспроизведений и задач
Транспортировка и исполнение модуля
Ссылка на модуль
Аргументы модуля
Чёрные списки модуля
Транспортировка и исполнение модуля
Производительность задачи
Типы и положение переменных
Типы переменных
Магические переменные
Доступ к внешним данным
Старшинство переменных
Порядок старшинства
Порядок старшинства групп переменных
Слияние хэшей
Выводы
Вопросы
Глава 2. Миграция с более ранних версий Ansible
Технические требования
Изменения в Ansible 4.3
Коллекции содержимого Ansible
Обновление с более ранних установок Ansible
Деинсталляция Ansible 3.0 или старше
Установка Ansible с чистого листа
Что представляют собой коллекции Ansible?
Анатомия коллекции Ansible
Установка дополнительных модулей при помощи ansible-galaxy
Как портировать наследуемые плейбуки в Ansible 4.3 (пример)
Выводы
Вопросы
Глава 3. Защита ваших ключей безопасности в Ansible
Технические требования
Шифрование данных в покое
Идентификаторы и пароли Vault
Вещи, которые может шифровать Vault
Создание и изменение зашифрованных файлов
Создание зашифрованных файлов
Приглашение ко вводу пароля
Файл пароля
Сценарий пароля
Шифрование существующих файлов
Изменение зашифрованных файлов
Ротация паролей зашифрованных файлов
Расшифровка зашифрованных файлов
Исполнение плейбуков Ansible c зашифрованными файлами
Смешение зашифрованных данных с текстовым YAML
Защита ключей безопасности при работе
Ключи безопасности, передаваемые на удалённые хосты
Ключи безопасности, регистрируемые в удалённые или локальные файлы
Выводы
Вопросы
Глава 4. Ansible и Windows - не только для Linux
Технические требования
Запуск Ansible в Windows
Проверка вашей сборки
Включение WSL
Установка Linux под WSL
Настройка хостов Windows для управления Ansible при помощи WinRM
Системные требования для автоматизации через Ansible с применением WinRM
Включение модуля ожидания WinRM
Подключение Ansible к Windows при помощи WinRM
Обработка аутентификации и шифрования Windows при использовании WinRM
Механизмы аутентификации
Замечания относительно учётных записей
Подтверждение сертификатов поверх WinRM
АНастройка хостов Windows под управление Ansible с применением SSH
Автоматизация задач Windows при помощи Ansible
Выбор правильного модуля
Установка программного обеспечения
За пределами модулей
Выводы
Вопросы
Глава 5. Корпоративное управление инфраструктурой при помощи AWX
Технические требования
Получение AWX поднятым и исполняемым
Интеграция AWX с вашим первым плейбуком
Определение проекта
Определение учёта
Определение полномочий
Определение шаблона
Выход за основы
RBAC (Role-based access control)
Организации
Расписания
Аудит
Опрос
Шаблоны рабочего процесса
Уведомления
Применение API
Выводы
Вопросы
Часть 2. Написание плейбуков Ansible и устранение неисправностей в них
Глава 6. Высвобождение всей мощи шаблонов Jinja2
Технические требования
Управляющие структуры
Условные зависимости
Встроенные условные зависимости
Циклы
Фильтрация элементов цикла
Индексация цикла
Макросы
Макро переменные
name
arguments
defaults
catch_kwargs
catch_varargs
caller
Манипуляция данными
Синтаксис
Полезные встроенные фильтры
default
count
random
round
Полезные создаваемые Ansible индивидуальные фильтры
Связанные с состоянием задачи фильтры
shuffle
Фильтры для обработки имён пути
basename
dirname
expanduser
Кодирование Base64
Поиск содержимого
Пропуск неопределённых аргументов
Объектные методы Python
Строковые методы
Методы списков
Методы int и float
Сравнение значений
Сравнения
Логика
Тесты
Выводы
Вопросы
Глава 7. Условия управления задачами
Технические требования
Определение отказа
Игнорирование ошибок
Определение условия ошибки
Определение изменения
Особая обработка семейства команд
Подавление изменений
Восстановление после ошибки
Применение раздела rescue
Применение раздела always
Обработка ненадёжных сред
Итерационные задачи и циклы
Выводы
Вопросы
Глава 8. Компоновка повторно используемого содержания и ролей Ansible
Технические требования
Концепции вложения задач, обработчика, переменной и плейбука
Вложения задач
Передача значений переменных во вложенные задачи
Передача сложных данных во вложенные задачи
Условные вложения задач
Помеченные вложенные задачи
Вложения задач с циклами
Вложения обработчиков
Вложения переменных
vars_files
Динамические вложения vars_files
include_vars
extra-vars
Вложения плейбуков
Роли
Структура ролей
Задачи
Обработчики
Переменные
Простые и встраиваемые модули
Зависимости
Файлы и шаблоны
Собираем всё вместе
Зависимости ролей
Переменные зависимости ролей
Тэги
Условные зависимости ролей
Приложения ролей
Смешанные роли и задачи
Вложения ролей и импорты
Совместное использование ролей
Ansible Galaxy
Выводы
Вопросы
Глава 9. Устранение неисправностей Ansible
Технические требования
Ведение регистрации и подробность плейбуков
Уровень детализации
Ведение журнала
Самонаблюдение переменной
Подэлементы переменной
Сопоставление подэлементов и методов объектов Python
Исполнение отладочного кода
Отладка плейбуков
Отладка локального кода
Отладка кода учёта ресурсов
Отладка кода плейбуков
Отладка кода исполнителя
Отладка удалённого кода
Отладка действия встраиваемого модуля
Выводы
Глава 10. Расширение Ansible
Технические требования
Разработка модулей
Построение базового модуля
Индивидуальные модули
Пример - Простой модуль
Документирование модуля
Предоставление данных фактов
Режим проверки
Поддержка режима проверки
Обработка режима проверки
Разработка встраиваемых модулей
Тип подключения встраиваемого модуля
Встраиваемые модули оболочки
Встраиваемые модули поиска
Встраиваемые модули переменных
Встраиваемые модули кэширования фактов
Встраиваемые модули фильтрации
Встраиваемые модули обратного вызова
Встраиваемые модули действия
Встраиваемые модули распространения
Разработка встраиваемых модулей динамического учёта
Перечисление хостов
Перечисление переменных хостов
Простой встраиваемый модуль учёта ресурсов
Оптимизация производительности сценария
Участие в проекте Ansible
Представление содействия
Репозиторий Ansible
Исполнение тестов
Тестирование элемента
Интеграция тестов
Проверка стиля кода
Выполнение запроса в пуле
Выводы
Вопросы
Часть 3. Оркестрация с применением Ansible
Глава 11. Минимизация времени простоя и накатывания развёртываний
Технические требования
Обновления на месте
Расширение вовне и контрактация
Быстрые отказы
Опция any_errors_fatal
Опция max_fail_percentage
Форсирование обработки
Минимизация срывов
Откладывание срывов
Одноразовое исполнение разрушающих задач
Построение отдельных задач в последовательность
Выводы
Вопросы
Глава 12. Предоставление инфраструктуры
Технические требования
Управление облачной инфраструктурой на площадке
Создание серверов
Загрузка виртуальных серверов
Добавление учёта ресурсов в реальном времени
Использование источников учёта ресурсов OpenStack
Управление общедоступной облачной инфраструктурой
Взаимодействие с контейнерами Docker
Построение образов
Построение контейнеров без Dockerfile
Учёт Docker
Сборка контейнеров при помощи Ansible
Выводы
Вопросы
Глава 13. Автоматизация сетевой среды
Технические требования
Ansible для управления сетевой средой
Кроссплатформная поддержка
Переносимость настроек
Резервное копирование, восстановление и управление версиями
Запросы автоматического изменения
Обработка множества типов устройств
Исследование ваших модулей
Настройка ваших модулей
Создание ваших плейбуков
Работа с модулем команд cli_
Настройка Arista EOS
Настройка сетевых коммутаторов Cumulus Networks с помощью Ansible
Определение нашей описи
Практические примеры
Рекомендации
Опись
Сбор фактов
Переходные хосты
Выводы
Вопросы
Указатель