 |
Запускаем Ansible
Мозер Р., Хоштейн Л.
Год выпуска: 2018
ISBN: 978-5-97060-513-4
Переплёт: твердый
382 страниц
Цена: 1352.00 грн. Есть в наличии - дата отправки: 27 сентября На 1 книгу
|
Среди множества систем управления конфигурациями Ansible обладает неоспоримыми преимуществами. Он минималистичен, не требует установки программного обеспечения на узлах, а также легок в освоении.
Второе издание книги "Запускаем Ansible" научит вас выстраивать продуктивную работу в кратчайшие сроки, будь вы разработчик, разворачивающий код в производственной среде, или системный администратор в поисках более эффективного решения для автоматизации.
Авторы книги расскажут вам, как написать сценарий (скрипт управления конфигурациями Ansible), установить контроль над удаленными серверами, а также задействовать мощный функционал встроенных декларативных модулей. Вы поймете, что Ansible обладает всеми функциональными возможностями, которые вам необходимы, и той простотой, о которой вы мечтаете.
- Узнайте, чем Ansible отличается от других систем управления конфигурациями
- Используйте формат файлов YAML для написания собственных сценариев
- Изучите пример полного сценария для развертывания нетривиального приложения
- Администрируйте машины Windows и автоматизируйте конфигурацию сетевых устройств
- Производите развертывание приложений на Amazon EC2 и других облачных платформах
- Используйте Ansible для создания образов Docker и развертывания контейнеров Docker
Отзыв эксперта:
«Я запоем прочитал рукопись первого издания книги за несколько часов. Лорин создал нечто невероятное, продемонстрировав Ansible со всех сторон. Я очень обрадовался, узнав, что он решил объединить свои усилия с Рене для работы над вторым изданием. Авторы проделали выдающуюся работу, показав как эффективно использовать необычайно полезный инструмент. По моему мнению, никто бы не смог справиться с этой задачей на столь же глубоком уровне».
- Жан-Пит Менс (Jan-Piet Mens), консультант
Содержание книги "Запускаем Ansible"
Предисловие.........................................................................................................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
Строки................................................................................................................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
Глава 4. Переменные и факты.............................................................................85
Определение переменных в сценариях...............................................................85
Вывод значений переменных...............................................................................86
Регистрация переменных.....................................................................................86
Факты......................................................................................................................89
Просмотр всех фактов, доступных для сервера...............................................90
Вывод подмножества фактов............................................................................91
Любой модуль может возвращать факты.........................................................92
Локальные факты..............................................................................................93
Использование модуля set_fact для задания новой переменной.......................94
Встроенные переменные......................................................................................94
hostvars...............................................................................................................95
inventory_hostname............................................................................................95
groups..................................................................................................................96
Установка переменных из командной строки....................................................96
Приоритет..............................................................................................................97
Глава 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
Активация конфигурации Nginx........................................................................130
Установка сертификатов TLS..........................................................................130
Установка задания cron для Twitter....................................................................131
Сценарий целиком..............................................................................................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
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
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
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
Группы безопасности..........................................................................................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
Модуль 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
Какие задачи решает 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
|