Ansible Playbook | Кодементор

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

Ansible playbooks, чтобы продемонстрировать, как писать сценарии Ansible play.
Теперь все начинает становиться интереснее. Используя Ansible playbooks, вы сможете управлять конфигурацией, оркестровкой, выделением ресурсов и развертыванием. Сценарии Playbook используют команды Ansiblead-hoc более организованным образом, подобно тому, как сценарии оболочки упорядочивают команды оболочки для выполнения задачи в системе, но более продвинутые. Ansible playbooks может устанавливать и настраивать сложные среды на «голом железе», виртуально или в облаке. Он может последовательно развертывать многоуровневые машины; применять исправления и исправления для систем, устройств и приложений; собирать данные с хостов или служб мониторинга; и действовать соответствующим образом, чтобы отправлять немедленные действия на серверы, сетевые устройства и балансировщики нагрузки. Все эти задачи можно делегировать другим серверам.

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

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

nano ./playbook/apt_cache.yml

Затем заполните его следующим кодом:

---
- name: playbook to update Debian Linux package cache
hosts: servers
tasks:
  - name: use apt to update its cache
become: yes
apt:
update_cache: yes

YAML требует очень строгой файловой структуры при написании своих файлов. Хорошо выровненные параметры действий очень важны для успеха файла playbook. Сохраните файл и запустите команду ansible-playbook следующим образом:

ansible-playbook playbooks/apt-cache.yml

Следующий вывод выполнения плейбука показывает, внесла ли плейбук изменения в хосты:
1.PNG

Как видите, задача под названием «сбор фактов» была выполнена в рамках вашей простой пьесы. Это задача, запускающая настройку модуля, которая собирает всю полезную информацию о рассматриваемом хосте или хостах.

Если в этом нет необходимости, отключение задачи сбора фактов может повысить производительность ваших игр. Это можно сделать, добавив collect_facts: False при определении воспроизведения.

Теперь разберем структуру сценария playbook. Во-первых, объясните вариант имени. Это необязательный параметр, но настоятельно рекомендуется. Когда простое и осмысленное предложение записывается в качестве входных данных для параметра имени, оно помогает обеспечить полезное описание игры для улучшения взаимодействия с пользователем. Это также полезно при запуске playbook, чтобы увидеть, какие воспроизведения завершены, а какие еще обрабатываются. Вывод плейбука без использования параметра имени выглядит следующим образом:

---
- hosts: servers
gather_facts: False
tasks:
  - apt:
update_cache: yes
become: yes

При выполнении предыдущего плейбука вывод должен выглядеть следующим образом:
2.PNG

Затем у вас есть параметр hosts или строка. Это используется для указания на инвентарь, на котором должна быть запущена игра, либо для указания определенной группы или хоста, либо для того и другого вместе. На том же уровне внутри playbook вы можете заполнить другие параметры под ним. Эти параметры могут быть переменными хоста или группы, используемыми для принудительного применения параметров, настроенных в их файлах инвентаризации. Эти переменные могут быть указаны для воспроизведения, когда вы определяете их под строкой hosts:

---
- name: playbook to update Debian Linux package cache
hosts: servers
remote_user: setup
become: yes
tasks:

Они также могут быть специфичными для задачи, если вы определяете их внутри задачи:

---
- name: playbook to update Debian Linux package cache
hosts: servers
tasks:
  - name: use apt to update its cache
apt:
update_cache: yes
become: yes
become_user: setup

Затем перейдите к списку задач, который в основном представляет собой модуль списка, который будет выполняться последовательно. Аналогично плейбуку, каждая задача может быть названа с помощью параметра name:. Это настоятельно рекомендуется как для документации, так и для отслеживания статуса задач:

tasks:
   - name: use apt to update its cache
apt: update_cache=yes

В случае сбоя задачи выполнение плейбука останавливается с ошибкой. Чтобы обойти это при запуске некритической задачи, вы всегда можете добавить параметр ignore_errors: True:

tasks:
   - name: use apt to update its cache
apt:
update_cache: yes
ignore_errors: True

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

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

tasks:
  - name: use apt to update its cache
apt:
update_cache: yes
become: yes
notify: pkg_installable

handlers:
  - name: pkg_installable
apt:
name: htop
state: latest
become: yes

При выполнении предыдущего плейбука вывод должен выглядеть следующим образом:
3.PNG

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

Расширенный сценарий Ansible playbook включает условные операторы и операторы цикла, чтобы дать разработчику различную логику и шаблоны для использования в своих playbooks. Например, параметр when — это способ реализации управления задачами с условиями. Рассмотрим следующий пример, который запускает обновления приложений только тогда, когда они работают в правильном семействе Linux:

tasks:
  - name: use apt to update all apps for Debian family
apt:
name: "*"
state: latest
update_cache: yes
become: yes
when: ansible_os_family == "Debian"

  - name: use yum to update all apps for Red Hat family
yum:
name: '*'
state: latest
become: yes
when: ansible_os_family == "Red Hat"

Условие параметра when не ограничивается значениями, полученными из хост-системы, но также и статусом выполнения задачи, который может быть одним из следующих:
• Результат не удался
• Результат удался
• Результат пропущен

Существуют различные другие способы использования условий playbook. Можно также использовать оператор цикла. Для этого используйте параметр цикла. В некоторых случаях, когда вы хотите применить действие к нескольким записям, используйте параметр vars:, как показано в следующем примере:

tasks:
  - name: use apt to install multiple apps
apt:
name: '{{ app }}'
state: latest
update_cache: yes
vars:
app:
        - htop
        - mc
        - nload
become: yes

Это также можно сделать с помощью параметра цикла:

tasks:
  - name: use apt to install multiple apps
apt:
name: '{{ item }}'
state: latest
update_cache: yes
loop:
        - htop
        - mc
        - nload
become: yes

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

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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *