Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 638282)
Контекстум
Электро-2024

Запускаем Ansible. Простой способ автоматизации управления конфигурациями и развертыванием приложений (5000,00 руб.)

0   0
Первый авторХохштейн
АвторыМозер Р.
ИздательствоМ.: ДМК Пресс
Страниц383
ID794963
АннотацияКнига рассказывает о системе управления конфигурациями Ansible с множеством примеров продуктивной работы. Она минималистична, не требует установки программного обеспечения на узлах, и легка в освоении. Вы узнаете, как написать скрипт управления конфигурациями, установить контроль над удаленными серверами, а также задействовать мощный функционал встроенных модулей. Рассмотрено чем Ansible отличается от других систем управления конфигурациями, приведены примеры развертывания на различных облачных платформах. Издание будет полезно разработчикам и системным администраторам, принимающим решения о выборе способов автоматизации.
ISBN978-5-97060-513-4
УДК004.4'234Ansible
ББК32.972.1
Хохштейн, Л. Запускаем Ansible. Простой способ автоматизации управления конфигурациями и развертыванием приложений / Р. Мозер; Л. Хохштейн .— Москва : ДМК Пресс, 2018 .— 383 с. — ISBN 978-5-97060-513-4 .— URL: https://rucont.ru/efd/794963 (дата обращения: 08.06.2024)

Предпросмотр (выдержки из произведения)

Запускаем_Ansible._Простой_способ_автоматизации_управления_конфигурациями_и_развертыванием_приложений.pdf
УДК 004.4'234Ansible ББК 32.972.1 М15 М15 Запускаем Ansible / пер. с анг. Е. В. Филонова, А. Н. Киселева. – М.: ДМК Пресс, 2018. – 382 с.: ил. Хохштейн Л., Мозер Р. ISBN 978-5-97060-513-4 Книга рассказывает о системе управления конфигурациями Ansible с множеством примеров продуктивной работы. Она минималистична, не требует установки программного обеспечения на узлах, и легка в освоении. Вы узнаете, как написать скрипт управления конфигурациями, установить контроль над удаленными серверами, а также задействовать мощный функционал встроенных модулей. Рассмотрено чем Ansible отличается от других систем управления конфигурациями, приведены примеры развертывания на различных облачных платформах. Издание будет полезно разработчикам и системным администраторам, принимающим решения о выборе способов автоматизации. УДК 004.4'234Ansible ББК 32.972.1 2nd Copyright Authorized Russian translation of the English edition of Ansible: Up and Running, Edition, ISBN 9781491979808 © 2017 Lorin Hochstein, Rene Moser. This translation is published and sold by permission of O'Reilly Media, Inc., which owns or controls all rights to publish and sell the same. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-491-97980-8 (анг.) ISBN 978-5-97060-513-4 (рус.) © Оформление, издание, перевод, ДМК Пресс, 2018 Copyright © 2017 O’Reilly Media, Inc.
Стр.5
Содержание Предисловие ........................................................................................................16 Предисловие ко второму изданию ....................................................................18 Предисловие к первому изданию ......................................................................20 Глава 1. Введение.................................................................................................23 Примечание о версиях .........................................................................................24 Ansible: область применения ...............................................................................24 Как работает Ansible ............................................................................................25 Какие преимущества дает Ansible? .....................................................................26 Простота синтаксиса ........................................................................................27 Отсутствие необходимости установки на удаленных хостах ........................27 Основан на технологии принудительной настройки ....................................27 Управление небольшим числом серверов ......................................................28 Встроенные модули ..........................................................................................28 Очень тонкий слой абстракции .......................................................................29 Не слишком ли проста система Ansible? ............................................................30 Что я должен знать? ..............................................................................................31 О чем не рассказывается в этой книге ................................................................31 Установка Ansible ..................................................................................................32 Подготовка сервера для экспериментов .............................................................33 Использование Vagrant для подготовки сервера ............................................33 Передача информации о сервере в Ansible ....................................................36 Упрощение задачи с помощью файла ansible.cfg ...........................................37 Что дальше ............................................................................................................40 Глава 2. Сценарии: начало ..................................................................................41 Подготовка ............................................................................................................41 Очень простой сценарий......................................................................................42 Файл конфигурации Nginx ...............................................................................44 Создание начальной страницы .......................................................................44 Создание группы веб-серверов ......................................................................45 Запуск сценария....................................................................................................45 Сценарии пишутся на YAML ................................................................................47 Начало файла ....................................................................................................47 Комментарии ....................................................................................................47
Стр.6
6  Содержание Строки ...............................................................................................................47 Булевы выражения ...........................................................................................47 Списки ...............................................................................................................48 Словари .............................................................................................................48 Объединение строк...........................................................................................49 Структура сценария ..............................................................................................49 Операции ..........................................................................................................50 Задачи ................................................................................................................52 Модули ...............................................................................................................53 Резюме ...............................................................................................................54 Есть изменения? Отслеживание состояния хоста ..............................................54 Становимся знатоками: поддержка TLS ............................................................55 Создание сертификата TLS ..............................................................................56 Переменные ......................................................................................................56 Создание шаблона с конфигурацией Nginx ....................................................58 Обработчики .....................................................................................................59 Запуск сценария ...............................................................................................60 Глава 3. Реестр: описание серверов ..................................................................63 Файл реестра ........................................................................................................63 Вводная часть: несколько машин Vagrant ..........................................................64 Поведенческие параметры хостов в реестре ......................................................67 ansible_connection .............................................................................................67 ansible_shell_type ...............................................................................................67 ansible_python_interpreter ................................................................................68 ansible_*_interpreter ..........................................................................................68 Переопределение поведенческих параметров по умолчанию .....................68 Группы, группы и еще раз группы .......................................................................68 Пример: развертывание приложения Django .................................................70 Псевдонимы и порты .......................................................................................72 Группировка групп ...........................................................................................72 Имена хостов с номерами (домашние питомцы и стадо) .............................72 Переменные хостов и групп: внутренняя сторона реестра ...............................73 Переменные хостов и групп: создание собственных файлов ...........................75 Динамический реестр ..........................................................................................76 Интерфейс сценария динамического реестра ....................................................77 Написание сценария динамического реестра ................................................78 Предопределенные сценарии реестра ............................................................81 Деление реестра на несколько файлов ................................................................82 Добавление элементов во время выполнения с помощью add_host и group_by ..............................................................................................................82 add_host .............................................................................................................82 group_by .............................................................................................................83
Стр.7
Содержание  7 Глава 4. Переменные и факты ............................................................................85 Определение переменных в сценариях ..............................................................85 Вывод значений переменных ..............................................................................86 Регистрация переменных ....................................................................................86 Факты .....................................................................................................................89 Просмотр всех фактов, доступных для сервера ..............................................90 Вывод подмножества фактов ...........................................................................91 Любой модуль может возвращать факты ........................................................92 Локальные факты .............................................................................................93 Использование модуля set_fact для задания новой переменной ......................94 Встроенные переменные .....................................................................................94 hostvars ..............................................................................................................95 inventory_hostname ...........................................................................................95 groups .................................................................................................................96 Глава 5. Введение в Mezzanine: тестовое приложение ...................................99 Почему сложно развертывать приложения в промышленном окружении ......99 База данных PostgreSQL .................................................................................103 Сервер приложений Gunicorn ........................................................................103 Веб-сервер Nginx ............................................................................................104 Диспетчер процессов Supervisor ...................................................................105 Глава 6. Развертывание Mezzanine с помощью Ansible ................................106 Вывод списка задач в сценарии ........................................................................106 Организация устанавливаемых файлов ...........................................................107 Переменные и скрытые переменные................................................................108 Использование цикла (with_items) для установки большого количества пакетов ............................................................................................109 Добавление выражения become в задачу ..........................................................111 Обновление кэша диспетчера пакетов apt .......................................................111 Извлечение проекта из репозитория Git .........................................................113 Установка Mezzanine и других пакетов в virtualenv .........................................115 Короткое отступление: составные аргументы задач .......................................117 Настройка базы данных .....................................................................................120 Создание файла local_settings.py из шаблона ...................................................121 Выполнение команд django-manage .................................................................124 Запуск своих сценариев на Python в контексте приложения ..........................125 Настройка конфигурационных файлов служб .............................................127 Установка переменных из командной строки....................................................96 Приоритет .............................................................................................................97 Активация конфигурации Nginx .......................................................................130 Установка сертификатов TLS .........................................................................130 Установка задания cron для Twitter ...................................................................131
Стр.8
8  Содержание Сценарий целиком .............................................................................................132 Запуск сценария на машине Vagrant ................................................................136 Устранение проблем ...........................................................................................136 Не получается извлечь файлы из репозитория Git .....................................136 Недоступен хост с адресом 192.168.33.10.xip.io ...........................................137 Bad Request (400) .............................................................................................137 Установка Mezzanine на нескольких машинах .................................................137 Глава 7. Роли: масштабирование сценария ....................................................138 Базовая структура роли ......................................................................................138 Примеры ролей: database и mezzanine ..............................................................139 Использование ролей в сценариях ....................................................................139 Предварительные и заключительные задачи ...................................................140 Роль database для развертывания базы данных ...............................................141 Роль mezzanine для развертывания Mezzanine ................................................143 Создание файлов и директорий ролей с помощью ansible-galaxy ..................148 Зависимые роли ..................................................................................................148 Ansible Galaxy ......................................................................................................149 Веб-интерфейс ................................................................................................149 Интерфейс командной строки .......................................................................150 Добавление собственной роли.......................................................................151 Глава 8. Сложные сценарии ..............................................................................152 Команды changed_when и failed_when ...............................................................152 Фильтры ..............................................................................................................155 Фильтр default .................................................................................................156 Фильтры для зарегистрированных переменных .........................................156 Фильтры для путей к файлам ........................................................................156 Создание собственного фильтра ...................................................................157 Подстановки ........................................................................................................158 file ....................................................................................................................159 pipe...................................................................................................................160 env ....................................................................................................................160 password ...........................................................................................................160 template ...........................................................................................................161 csvfile ...............................................................................................................161 dnstxt ..............................................................................................................162 redis_kv .............................................................................................................163 etcd ...................................................................................................................164 Написание собственного плагина .................................................................164 Сложные циклы ..................................................................................................164 with_lines .........................................................................................................165 with_fileglob .....................................................................................................165
Стр.9
Содержание  9 with_dict ...........................................................................................................166 Циклические конструкции как плагины подстановок ................................167 Управление циклами ..........................................................................................167 Выбор имени переменной цикла ..................................................................167 Управление выводом ......................................................................................168 Подключение ......................................................................................................169 Динамическое подключение .........................................................................170 Подключение ролей ........................................................................................171 Блоки ...................................................................................................................172 Обработка ошибок с помощью блоков ..............................................................172 Шифрование конфиденциальных данных при помощи Vault .......................175 Глава 9. Управление хостами, задачами и обработчиками ..........................178 Шаблоны для выбора хостов ..............................................................................178 Ограничение обслуживаемых хостов ................................................................179 Запуск задачи на управляющей машине ..........................................................179 Запуск задачи на сторонней машине ................................................................180 Последовательное выполнение задачи на хостах по одному..........................180 Пакетная обработка хостов ................................................................................182 Однократный запуск .........................................................................................183 Стратегии выполнения ......................................................................................183 linear ................................................................................................................184 free ...................................................................................................................185 Улучшенные обработчики..................................................................................186 Обработчики в pre_tasks и post_tasks ............................................................186 Принудительный запуск обработчиков ........................................................187 Выполнение обработчиков по событиям......................................................189 Сбор фактов вручную .........................................................................................195 Получение IP-адреса хоста ................................................................................195 Глава 10. Плагины обратного вызова ..............................................................197 Плагины стандартного вывода ..........................................................................197 actionable .........................................................................................................198 debug ................................................................................................................198 dense ................................................................................................................199 json ...................................................................................................................199 minimal ............................................................................................................200 oneline .............................................................................................................200 selective ............................................................................................................200 skippy ...............................................................................................................200 Другие плагины ..................................................................................................201 foreman ............................................................................................................201 hipchat .............................................................................................................202
Стр.10
10  Содержание jabber ................................................................................................................202 junit ..................................................................................................................202 log_plays ...........................................................................................................203 logentries .........................................................................................................203 logstash ............................................................................................................203 mail ..................................................................................................................204 osx_say .............................................................................................................204 profile_tasks .....................................................................................................204 slack..................................................................................................................205 timer .....................................................................................................................205 Глава 11. Ускорение работы Ansible ................................................................206 Мультиплексирование SSH и ControlPersist .....................................................206 Включение мультиплексирования SSH вручную .........................................207 Параметры мультиплексирования SSH в Ansible .........................................208 Конвейерный режим ..........................................................................................209 Включение конвейерного режима ................................................................210 Настройка хостов для поддержки конвейерного режима ...........................210 Кэширование фактов .........................................................................................211 Кэширование фактов в файлах JSON ............................................................213 Кэширование фактов в Redis .........................................................................213 Кэширование фактов в Memcached ...............................................................214 Параллелизм .......................................................................................................214 Асинхронное выполнение задач с помощью Async .........................................215 Глава 12. Собственные модули .........................................................................217 Пример: проверка доступности удаленного сервера .......................................217 Использование модуля script вместо написания своего модуля .....................217 Где хранить свои модули ....................................................................................218 Как Ansible вызывает модули ...........................................................................218 Генерация автономного сценария на Python с аргументами (только модули на Python) .............................................................................219 Копирование модуля на хост .........................................................................219 Создание файла с аргументами на хосте (для модулей не на языке Python) ........................................................................................219 Вызов модуля ..................................................................................................219 Ожидаемый вывод ..............................................................................................220 Ожидаемые выходные переменные .............................................................220 Реализация модулей на Python .........................................................................221 Анализ аргументов .........................................................................................222 Доступ к параметрам .....................................................................................223 Импортирование вспомогательного класса AnsibleModule ........................223 Свойства аргументов ......................................................................................224
Стр.11
Содержание  11 AnsibleModule: параметры метода инициализатора ...................................226 Возврат признака успешного завершения или неудачи .............................229 Вызов внешних команд ..................................................................................229 Режим проверки (пробный прогон) ..............................................................230 Документирование модуля ................................................................................231 Отладка модуля ...................................................................................................233 Создание модуля на Bash ..................................................................................234 Альтернативное местоположение интерпретатора Bash ................................235 Примеры модулей ..............................................................................................236 Глава 13. Vagrant ................................................................................................237 Полезные параметры настройки Vagrant .........................................................237 Перенаправление портов и приватные IP-адреса ......................................237 Перенаправление агента ................................................................................239 Сценарий наполнения Ansible ..........................................................................239 Когда выполняется сценарий наполнения .......................................................239 Реестр, генерируемый системой Vagrant .........................................................240 Наполнение нескольких машин одновременно ...............................................241 Определение групп .............................................................................................242 Локальные сценарии наполнения .....................................................................243 Глава 14. Amazon EC2 ........................................................................................244 Терминология .....................................................................................................246 Экземпляр .......................................................................................................246 Образ машины Amazon ..................................................................................246 Теги ..................................................................................................................246 Учетные данные пользователя ..........................................................................247 Переменные окружения .................................................................................247 Файлы конфигурации.....................................................................................248 Необходимое условие: библиотека Python Boto ...............................................248 Динамическая инвентаризация ........................................................................249 Кэширование реестра .....................................................................................251 Другие параметры настройки .......................................................................251 Автоматические группы ................................................................................251 Определение динамических групп с помощью тегов ......................................252 Присваивание тегов имеющимся ресурсам .................................................252 Создание более точных названий групп .......................................................253 EC2 Virtual Private Cloud (VPC) и EC2 Classic ....................................................254 Конфигурирование ansible.cfg для использования с ec2 .................................255 Запуск новых экземпляров ................................................................................255 Пары ключей EC2 ................................................................................................257 Создание нового ключа ..................................................................................257 Выгрузка существующего ключа ...................................................................258
Стр.12
12  Содержание Группы безопасности .........................................................................................258 Разрешенные IP-адреса .................................................................................260 Порты групп безопасности ............................................................................260 Получение новейшего AMI ................................................................................261 Добавление нового экземпляра в группу .........................................................262 Ожидание запуска сервера.................................................................................264 Создание экземпляров идемпотентным способом .........................................265 Подведение итогов .............................................................................................265 Создание виртуального приватного облака .....................................................267 Динамическая инвентаризация и VPC .........................................................272 Создание AMI ......................................................................................................272 Использование модуля ec2_ami .....................................................................272 Использование Packer ....................................................................................273 Другие модули ....................................................................................................277 Глава 15. Docker .................................................................................................278 Объединение Docker и Ansible ...........................................................................279 Жизненный цикл приложения Docker .............................................................280 Пример применения: Ghost ...............................................................................281 Подключение к демону Docker ..........................................................................281 Запуск контейнера на локальной машине ........................................................281 Создание образа из Dockerfile ............................................................................282 Управление несколькими контейнерами на локальной машине ...................284 Отправка образа в реестр Docker .......................................................................285 Запрос информации о локальном образе .........................................................287 Развертывание приложения в контейнере Docker ...........................................288 Postgres ............................................................................................................288 Веб-сервер .......................................................................................................289 Веб-сервер: Ghost ...........................................................................................290 Веб-сервер: Nginx ...........................................................................................291 Удаление контейнеров ...................................................................................291 Прямое подключение к контейнерам ...........................................................292 Контейнеры Ansible ............................................................................................293 Контейнер Conductor ......................................................................................293 Создание образов Docker ...............................................................................294 Настройка container.yml .....................................................................................295 Запуск на локальной машине ........................................................................297 Публикация образов в реестрах ....................................................................298 Развертывание контейнеров в промышленном окружении .......................300 Глава 16. Отладка сценариев Ansible ..............................................................301 Информативные сообщения об ошибках .........................................................301 Отладка ошибок с SSH-подключением .............................................................302
Стр.13
Содержание  13 Модуль debug ......................................................................................................303 Интерактивный отладчик сценариев ................................................................304 Модуль assert .......................................................................................................305 Проверка сценария перед запуском ..................................................................307 Проверка синтаксиса ......................................................................................307 Список хостов .................................................................................................307 Список задач ...................................................................................................308 Проверка режима ............................................................................................308 Вывод изменений в файлах ...........................................................................308 Выбор задач для запуска ....................................................................................309 Пошаговое выполнение .................................................................................309 Выполнение с указанной задачи ...................................................................309 Теги ..................................................................................................................310 Глава 17. Управление хостами Windows ..........................................................311 Подключение к Windows ....................................................................................311 PowerShell ............................................................................................................312 Модули поддержки Windows..............................................................................314 Наш первый сценарий........................................................................................315 Обновление Windows .........................................................................................316 Добавление локальных пользователей .............................................................317 Итоги ...................................................................................................................320 Глава 18. Ansible для сетевых устройств ........................................................321 Статус сетевых модулей .....................................................................................322 Список поддерживаемых производителей сетевого оборудования ...............322 Подготовка сетевого устройства ........................................................................322 Настройка аутентификации через SSH .........................................................323 Как работают модули ..........................................................................................325 Наш первый сценарий........................................................................................326 Реестр и переменные для сетевых модулей .....................................................327 Локальное подключение ................................................................................328 Подключение к хосту ......................................................................................329 Переменные для аутентификации ................................................................329 Сохранение конфигурации ............................................................................330 Использование конфигураций из файлов ........................................................331 Шаблоны, шаблоны, шаблоны ...........................................................................334 Сбор фактов ........................................................................................................336 Итоги ...................................................................................................................338 Глава 19. Ansible Tower: Ansible для предприятий ........................................339 Модели подписки ...............................................................................................340 Пробная версия Ansible Tower .......................................................................340
Стр.14
14  Содержание Какие задачи решает Ansible Tower ...................................................................341 Управление доступом .....................................................................................341 Проекты ...........................................................................................................342 Управление инвентаризацией .......................................................................342 Запуск заданий из шаблонов .........................................................................344 RESTful API ..........................................................................................................346 Интерфейс командной строки Ansible Tower ...................................................347 Установка ........................................................................................................347 Создание пользователя ..................................................................................348 Запуск задания ................................................................................................350 Послесловие ........................................................................................................351 Приложение А. SSH ............................................................................................352 «Родной» SSH ......................................................................................................352 SSH-агент.............................................................................................................352 Запуск ssh-agent ..................................................................................................353 macOS ..............................................................................................................353 Linux ................................................................................................................354 Agent Forwarding .................................................................................................354 Команда sudo и перенаправление агента .....................................................356 Ключи хоста ........................................................................................................357 Приложение В. Использование ролей IAM для учетных данных EC2 .........361 Консоль управления AWS ..................................................................................361 Командная строка ...............................................................................................362 Глоссарий ............................................................................................................365 Библиография ....................................................................................................368 Предметный указатель .....................................................................................369 Об авторах ..........................................................................................................380 Колофон ..............................................................................................................381
Стр.15

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст