Узнайте об Ansible Playbook для автоматизации задач.


Ранее мы обсуждали введение, руководство по установке Ansible, а затем поговорим о Playbook и его строительных блоках..

Что такое Ansible Playbook?

Playbook – это язык автоматизации Ansible. Это простой файл с набором инструкций. Именно в playbooks мы определяем, что мы хотим, чтобы Ansible сделал. Playbooks содержат пьесы, которые запускают задачи, и эти задачи запускают модули. Их задачи выполняются последовательно.

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

Playbook Language

Playbooks – это простые файлы, написанные в коде YAML.

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

Ниже приведен пример файла YAML для установки mysql:


– имя: установить MySQL
хосты: geekflare-mysql-service
задания:
– имя: установить MySQL
действие: $ ansible_pkg_mgr pkg = состояние mysql-сервера = установлено
– имя: добавить Python MySQL DB
действие: $ ansible_pkg_mgr pkg = python-mysqldb state = установлено

Основы Ansible Playbook

В этой части статьи рассматриваются основные концепции Ansible, чтобы лучше понять Ansible Playbook..

Хосты и пользователи

Ansible нуждается в целевых машинах в инфраструктуре, на которой игры должны быть развернуты из Ansible playbook. Хосты добавляются в инвентарь Ansible через их IP-адреса. Хосты – это список из одной или нескольких групп или шаблонов хостов, разделенных двоеточием. Remote_user содержит имя учетной записи пользователя.


– хосты: ProdServers
remote_user: geekflare

переменные

Переменные позволяют вам изменять работу playbook. Они могут использоваться почти везде в книге игр и могут быть унаследованы от инвентаря, явно установленного во время выполнения, обнаруженного в начале запуска книги. Вы можете определить имя переменной, используя буквы, цифры и символы подчеркивания, но оно должно начинаться только с буквы.

Например, port_01 является допустимой переменной, тогда как 01_post является недопустимой переменной. Вот пример переменных в Ansible Playbook:

вары:
http_port: 80
max_clients: 200

Товарно-материальные запасы

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

Вы также можете указать переменную как часть списка инвентаря. Запасы – это список вещей, которые вы хотите автоматизировать.

[Вебсерверов]
192.168.20.1
192.168.20.2
192.168.20.4
[dbservers]
172.17.1.56
172.17.1.57

Задания

Играет в ANSIBLE PlayBook запускает задачи. Задача отвечает за запуск ANSIBL модулей. Одновременно может выполняться только одна задача, и задачи выполняются в последовательном порядке. Их задачи написаны на YAML, который в значительной степени похож на английский.

Например: установить имя_пакета, обновить имя_программы и т. Д. Ниже приведен пример задачи в Ansible playbook для установки httpd:

задания:
– имя: установить пакет httpd
yum: name = httpd state = latest

Обработчики

Обработчики – это особый вид задач.

Они могут быть вызваны заданием и запускаются один раз в конце игры. Он используется для отправки уведомлений, если в файле конфигурации есть какие-либо изменения, например, для уведомления службы запуска apache после ее установки. Синтаксис «уведомить» используется для вызова обработчиков. Ниже приведен пример обработчика для перезапуска apache:


– хосты: все
задания:
– имя: убедитесь, что Apache на последней версии
yum: name = httpd state = latest
уведомлять:
– перезапустить Apache
– имя: убедитесь, что Apache работает (и включите его при загрузке)
служба: имя = httpd состояние = запущен включен = да
обработчики:
– имя: перезагрузите apache
служба: имя = httpd состояние = перезапущено

Создай и запусти свой первый Ansible Playbook

Позвольте мне рассказать вам, как написать книгу. Каждый playbook начинается с трех черточек (-) сверху.

Первое, что вы упоминаете в Ansible Playbook, – это хосты, на которых вы хотите запустить playbook..

Затем вы можете упомянуть переменные, собирая факты; тогда вы можете упомянуть различные задачи, которые вы хотите выполнить. Теперь помните, что задача выполняется в том же порядке, в котором вы их записали. Например, вы хотите сначала установить программное обеспечение A, а затем программное обеспечение B, убедитесь, что первой задачей, записанной в книге, будет установка программного обеспечения A, а следующей задачей – установка программного обеспечения B.

Тогда у вас есть обработчики внизу. Обработчики также являются задачами, но разница в том, что для выполнения обработчиков вам нужны какие-то триггеры в списке задач для запуска обработчиков..

Позвольте мне показать вам, как создать сборник игр, установить и запустить nginx на хосте и запустить его..

Создайте файл .yml, в который вы положите свои коды YAML для создания сборника игр..

gedit nginx.yml

Поместите ниже код YAML в этот файл и сохраните файл.


– хосты: клиент
sudo: да
вары:
– server_port: 8080

задания:
– name: устанавливает веб-сервер nginx
apt: pkg = состояние nginx = установлено update_cache = true
уведомлять:
– начать nginx

обработчики:
– имя: начало nginx
служба: имя = состояние nginx = запущено

Приведенный выше файл YAML начинается с хостов, я хочу запустить эту книгу на клиентском компьютере (клиент). IP-адрес клиента уже сохранен в файле / etc / ansible / hosts.

Следующая строка позволяет запускать задачи с правами sudo.

Тогда я определил server_port как переменную в этой пьесе.

Затем моя первая задача в этой сборной Playbook – установить веб-сервер Nginx. Эта задача также имеет параметр notify, который означает, что после этой задачи обработчик с запуском.

Наконец, я написал обработчик для запуска nginx на клиентском компьютере.

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

ansible-playbook имя_файла.yml

Теперь я запусту ANSIBLE PlayBook, которую я создаю, чтобы установить и запустить nginx..

[Электронная почта защищена]: / home / geekflare # ansible-playbook nginx.yml

PLAY [Клиент] ********************************************** ********************

ЗАДАЧА [Сбор фактов] ********************************************* ************
хорошо: [узел1]

ЗАДАЧА [Устанавливает веб-сервер nginx] ******************************************* ****

изменено: [узел1]

RUNNING HANDLER [start nginx] ******************************************** ******
хорошо: [узел1]

PLAY RECAP ************************************************* *********************
узел1: нормально = 3 изменено = 1 недоступно = 0 не удалось = 0 пропущено = 0 спасено = 0 проигнорировано = 0

Запустите команду ниже, чтобы проверить, был ли сервер nginx установлен и правильно запущен ANSIBLE PlayBook.

[Электронная почта защищена]: / home / geekflare # ps waux | grep nginx
корень 3021 0,0 0,0 77676 1516? Сс 15:27 0:00 nginx: мастер-процесс / usr / sbin / nginx -g включен демон; master_process on;

Вывод

Это было об Ansible playbook. Я надеюсь, что эта статья помогла вам узнать, как вы можете создать и запустить Ansible playbook. Проверьте это Курс, если вы хотите изучать сложные темы в Ansible, в том числе роли, Jinja2, поиски, фильтр, пользовательские модули.

TAGS:

  • анзибль

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me