Перейти к содержанию

Терминалогия в Ansible

# A

Action Действие — это часть задачи, которая определяет, какой из модулей запускать и какие аргументы передавать этому модулю. Каждая задача может иметь только одно действие, но может иметь и другие параметры.

Ad Hoc Относится к запуску Ansible для выполнения некоторой быстрой команды с использованием /usr/bin/ansible вместо языка оркестровки /usr/bin/ansible-playbook . Примером специальной команды может быть перезагрузка 50 компьютеров в вашей инфраструктуре. Все, что вы можете сделать ad hoc, можно выполнить, написав сборник пьес , а сборники пьес также могут объединить несколько других операций.

Ansible (the package) Пакет программного обеспечения (Python, deb, rpm и т. д.), содержащий ansible-core и выбранную группу коллекций. Сборники сценариев, работавшие с Ansible 2.9, должны по-прежнему работать с пакетом Ansible 2.10. Список коллекций, включенных в Ansible, а также включенную версию см. в ansible-.buildфайле в каталоге конкретной версии ansible-build-data .ansible-core

ansible-base Используется только для 2.10. Устанавливаемый пакет (пакет RPM/Python/Deb), созданный из репозитория ansible/ansible . Видеть ansible-core.

ansible-core Имя используется начиная с 2.11. Устанавливаемый пакет (пакет RPM/Python/Deb), созданный из репозитория ansible/ansible . Содержит инструменты командной строки и код для основных функций и возможностей, таких как копирование кода модуля на управляемые узлы. Пакет ansible-coreвключает в себя несколько модулей и плагинов и позволяет добавлять другие путем установки коллекций.

Ansible Galaxy Сервер онлайн-распространения для поиска и обмена контентом сообщества Ansible, иногда называемый сообществом Galaxy. Кроме того, утилита командной строки, которая позволяет пользователям устанавливать отдельные коллекции Ansible, например .ansible-galaxy collection install community.crypto

Async Относится к задаче, которая настроена для запуска в фоновом режиме, а не для ожидания завершения. Если у вас есть длительный процесс, который будет выполняться дольше, чем тайм-аут SSH, имеет смысл запустить эту задачу в асинхронном режиме. Асинхронные режимы могут опрашивать завершение каждые несколько секунд или могут быть настроены на «запустить и забыть», и в этом случае Ansible даже не будет снова проверять задачу; он просто запустит его и перейдет к следующим шагам. Асинхронные режимы работают как с /usr/bin/ansible, так и с /usr/bin/ansible-playbook .

# С

Callback Plugin Относится к некоторому написанному пользователем коду, который может перехватывать результаты Ansible и что-то с ними делать. Некоторые предоставленные примеры в проекте GitHub выполняют пользовательское ведение журнала, отправку электронной почты или даже воспроизведение звуковых эффектов.

Check Mode Относится к запуску Ansible с --checkо пцией, которая не вносит никаких изменений в удаленные системы, а выводит только те изменения, которые могли бы произойти, если бы команда выполнялась без этого флага. Это аналогично так называемым режимам «пробного запуска» в других системах, хотя пользователя следует предупредить, что при этом не учитываются неожиданные сбои команд или каскадные эффекты (что справедливо для аналогичных режимов в других системах). Используйте это, чтобы получить представление о том, что может произойти, но не заменяйте этим хорошую промежуточную среду.

Collection Формат упаковки для объединения и распространения контента Ansible, включая плагины, роли, модули и многое другое. Коллекции выпускаются независимо от других коллекций, ansible-coreпоэтому функции могут стать доступными пользователям раньше. Некоторые коллекции упакованы с помощью Ansible (версия 2.10 или новее). Вы можете установить другие коллекции (или другие версии коллекций) с помощью .ansible-galaxy collection install

Collection name Вторая часть полного имени коллекции. Имя коллекции разделяет пространство имен коллекции и обычно отражает функцию содержимого коллекции. Например, ciscoпространство имен может содержать cisco.ios, cisco.aciи cisco.nxos, а также содержимое для управления различными сетевыми устройствами, обслуживаемыми Cisco.

community.general (collection) Специальная коллекция, управляемая командой сообщества Ansible, содержащая все модули и плагины, поставляемые в Ansible 2.9, которые не имеют собственной специальной коллекции. См. Community.general в Galaxy.

community.network (collection) Подобно community.general, фокусируется на сетевом контенте. Community.network в Галактике.

Connection Plugin По умолчанию Ansible взаимодействует с удаленными компьютерами через подключаемые библиотеки. Ansible использует собственный OpenSSH ( SSH (Native) ) или реализацию Python под названием paramiko . OpenSSH предпочтителен, если вы используете последнюю версию, а также включает некоторые функции, такие как Kerberos и переходные хосты. Это описано в разделе «Начало работы» . Существуют также другие типы подключения accelerate, такие как режим, который должен быть загружен через один из типов подключения на основе SSH, но он очень быстрый, и локальный режим, который действует в локальной системе. Пользователи также могут писать свои собственные плагины подключения.

Conditionals Условное выражение — это выражение, которое принимает значение true или false и определяет, будет ли данная задача выполняться на данной машине или нет. Условные выражения Ansible основаны на операторе «когда», который обсуждается в разделе « Работа со сборниками сценариев» .

# D

Declarative Подход к достижению задачи, использующий описание конечного состояния, а не описание последовательности шагов, необходимых для достижения этого состояния. В качестве примера из реальной жизни декларативная спецификация задачи будет такой: «поместите меня в Калифорнию». В зависимости от вашего текущего местоположения последовательность действий по доставке вас в Калифорнию может различаться, а если вы уже находитесь в Калифорнии, вообще ничего делать не нужно. Ресурсы Ansible являются декларативными; он определяет шаги, необходимые для достижения конечного состояния. Это также позволяет узнать, необходимо ли предпринять какие-либо шаги для достижения конечного состояния.

Diff Mode --diff В Ansible можно передать флаг, чтобы показать, что изменилось в модулях, которые его поддерживают . Вы можете комбинировать это с --check для получения хорошего «пробного прогона». Файлы различий обычно имеют унифицированный формат различий.

Distribution server Сервер, такой как Ansible Galaxy или Red Hat Automation Hub, где вы можете распространять свои коллекции и предоставлять другим доступ к этим коллекциям. Список типов серверов распространения см. в разделе Распространение коллекций . Некоторые функции Ansible доступны только на определенных серверах распространения.

# E

Executor Основной программный компонент Ansible, который непосредственно лежит в основе /usr/bin/ansible и соответствует вызову каждой задачи в playbook . Разработчики Ansible могут говорить о Executor, но это не совсем пользовательский словарь.

# F

Facts Факты — это просто факты, обнаруженные об удаленных узлах. Хотя их можно использовать в сборниках сценариев и шаблонах так же, как переменные, факты — это вещи, которые выводятся, а не устанавливаются. Факты автоматически обнаруживаются Ansible при запуске пьес путем выполнения внутреннего модуля настройки на удаленных узлах. Вам никогда не придется явно вызывать модуль настройки, он просто запускается, но его можно отключить, чтобы сэкономить время, если он не нужен, или вы можете указать ansible собирать только подмножество полных фактов с помощью этой gather_subset:опции. Для удобства пользователей, переходящих с других систем управления конфигурациями, модуль фактов также будет извлекать факты из инструментов ohai и facter , если они установлены. Это библиотеки фактов от Chef и Puppet соответственно. (Они также могут быть отключены с помощью gather_subset:)

Filter Plugin Плагин фильтра — это то, что большинству пользователей никогда не придется понимать. Они позволяют создавать новые фильтры Jinja2 , которые в той или иной степени будут полезны только тем, кто знает, что такое фильтры Jinja2. Если они вам нужны, вы можете научиться их писать в разделе документации API .

Forks Ansible взаимодействует с удаленными узлами параллельно, и уровень параллелизма можно установить, передав --forksили отредактировав значение по умолчанию в файле конфигурации. По умолчанию используются очень консервативные пять (5) вилок, хотя, если у вас много оперативной памяти, вы можете легко установить значение, например, 50, для увеличения параллелизма.

Fully Qualified Collection Name (FQCN) Полное определение модуля, плагина или роли, размещенного в коллекции, в форме . Позволяет Playbook ссылаться на определенный модуль или плагин из определенного источника недвусмысленным образом, например, community.grafana.grafana_dashboard. FQCN требуется, если вы хотите указать точный источник плагина. Например, если несколько коллекций содержат подключаемый модуль модуля с именем user, FQCN указывает, какой из них использовать для данной задачи. Если у вас установлено несколько коллекций, FQCN всегда является явным и авторитетным индикатором того, в какой коллекции искать правильный плагин для каждой задачи.

# G

Gather Facts (Boolean) Факты упомянуты выше. Иногда при запуске плейбука с несколькими играми желательно иметь несколько пьес, которые не требуют вычисления фактов, если им не нужно будет использовать какое-либо из этих значений. Установкасценария позволяет пропустить этот неявный сбор фактов.gather_facts: False

Globbing Подстановка — это способ выбора нескольких хостов на основе подстановочных знаков, а не имени конкретного хоста или имени группы, в которой они находятся. Например, можно выбрать ww*соответствие всем хостам, начинающимся с www. Эта концепция взята непосредственно из Func , одного из ранних проектов Майкла ДеХаана (основателя Ansible). В дополнение к базовому подстановке также возможны различные операции над множествами, такие как «хосты в этой группе, а не в другой группе» и так далее.

Group Группа состоит из нескольких хостов, назначенных в пул, которые можно удобно объединить вместе, а также из заданных общих для них переменных.

Group Vars Файлы group_vars/— это файлы, которые находятся в каталоге рядом с файлом инвентаризации, с необязательным именем файла, названным в честь каждой группы. Это удобное место для размещения переменных, предоставленных данной группе, особенно сложных структур данных, чтобы эти переменные не приходилось встраивать в файл инвентаря или книгу воспроизведения .

# H

Handlers Обработчики аналогичны обычным задачам в сборнике сценариев Ansible (см. Задачи ), но запускаются только в том случае, если Задача содержит notifyключевое слово, а также указывает, что она что-то изменила. Например, если файл конфигурации изменен, то задача, ссылающаяся на операцию создания шаблона файла конфигурации, может уведомить обработчик перезапуска службы. Это означает, что службы можно отключить только в том случае, если их необходимо перезапустить. Обработчики можно использовать не только для перезапуска служб, но перезапуск служб является наиболее распространенным.

Host Хост — это просто удаленная машина, которой управляет Ansible. Им могут быть назначены отдельные переменные, а также они могут быть организованы в группы. У всех хостов есть имя, по которому к ним можно получить доступ (которое представляет собой IP-адрес или имя домена) и, при необходимости, номер порта, если к ним не требуется доступ через порт SSH по умолчанию.

Host Specifier Каждая игра в Ansible сопоставляет серию задач (которые определяют роль, цель или порядок работы системы) с набором систем.

Это hosts:ключевое слово в каждой игре часто называют спецификатором хостов.

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

Host Vars Как и в случае с Group Vars , каталог рядом с указанным файлом инвентаризации host_vars/может содержать файл, названный в честь каждого имени хоста в файле инвентаризации, в формате YAML . Это обеспечивает удобное место для назначения переменных хосту без необходимости встраивания их в файл инвентаризации . Файл Host Vars также можно использовать для определения сложных структур данных, которые невозможно представить в файле инвентаризации.

# I

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

Includes Идея в том, что файлы playbook (которые представляют собой не что иное, как списки игр ) могут включать в себя другие списки игр, а списки задач могут экстернализировать списки задач в других файлах, и аналогично с обработчиками . Включения могут быть параметризованы, а это означает, что загруженный файл может передавать переменные. Например, включенная игра для настройки блога WordPress может принимать параметр с именем, userи эта игра может быть включена более одного раза для создания блога как для , так aliceи для bob.

Inventory Файл (по умолчанию Ansible использует простой формат INI), описывающий хосты и группы в Ansible. Инвентаризация также может быть обеспечена с помощью сценария инвентаризации (иногда называемого «скриптом внешней инвентаризации»).

Inventory Script Очень простая программа (или сложная), которая ищет хосты , членство хостов в группах и переменную информацию из внешнего ресурса — будь то база данных SQL, решение CMDB или что-то вроде LDAP. Эта концепция была адаптирована из Puppet (где она называется «Классификатор внешних узлов») и работает более или менее точно так же.

# J

Jinja2 Jinja2 — предпочтительный язык шаблонов модуля шаблонов Ansible. Это очень простой язык шаблонов Python, который легко читается и легко пишется.

JSON Ansible использует JSON для возврата данных из удаленных модулей. Это позволяет писать модули на любом языке, а не только на Python.

# K

Keyword Основные выражения, составляющие Ansible, которые применяются к объектам playbook (Play, Block, Role и Task). Например, «vars:» — это ключевое слово, которое позволяет вам определять переменные в области объекта playbook, к которому оно применяется.

# L

Lazy Evaluation В общем, Ansible оценивает любые переменные в содержимом playbook в последнюю возможную секунду, а это означает, что если вы определяете структуру данных, эта структура данных сама может определять значения переменных внутри нее, и все «просто работает», как и следовало ожидать. Это также означает, что строки переменных могут включать в себя другие переменные внутри этих строк.

Library Коллекция модулей, доступных в /usr/bin/ansible или в сборнике сценариев Ansible .

Limit Groups Перейдя к ansible или ansible-playbook , команды можно ограничить подмножеством хостов . Например, это можно использовать для запуска сборника сценариев , который обычно нацелен на весь набор серверов на один конкретный сервер.--limit somegroup

Local Action Это ключевое слово является псевдонимом для . Используется, когда вы хотите перенаправить действие с удаленного устройства для выполнения на самом управляющем узле.delegate_to: localhost

Local Connection Использование в playbook или переход к /usr/bin/ansible указывает на то, что мы выполняем локальную вилку вместо выполнения на удаленном компьютере. Вы, вероятно, хотите или вместо этого, поскольку это ТОЛЬКО меняет соединение и никакого другого контекста для выполнения.connection: local-c locallocal_actiondelegate_to: localhost

Lookup Plugin Плагин поиска — это способ получить данные в Ansible из внешнего мира. Плагины поиска являются расширением Jinja2 и доступны в шаблонах, например, . Вот как реализуются такие вещи, как ,. Существуют также плагины поиска, например, которые загружают данные из файла, а также плагины для запроса переменных среды, текстовых записей DNS или хранилищ значений ключей.{{ lookup('file','/path/to/file') }}with_itemsfile

Loops Как правило, Ansible не является языком программирования. Он предпочитает быть более декларативным, хотя различные конструкции, например, loopпозволяют повторять конкретную задачу для нескольких элементов в списке. Некоторые модули, такие как yum и apt , фактически принимают списки напрямую и могут устанавливать все пакеты, указанные в этих списках, за одну транзакцию, что значительно ускоряет общее время настройки, поэтому их можно использовать без циклов.

# M

Modules Модули — это единицы работы, которые Ansible отправляет на удаленные машины. Модули запускаются либо с помощью /usr/bin/ansible, либо с помощью /usr/bin/ansible-playbook (когда несколько задач совместно используют несколько разных модулей). Модули могут быть реализованы на любом языке, включая Perl, Bash или Ruby, но могут использовать преимущества некоторого полезного кода общей библиотеки, если они написаны на Python. Модули просто должны возвращать JSON . После выполнения модулей на удаленных машинах они удаляются, поэтому долго работающие демоны не используются. Ansible называет коллекцию доступных модулей библиотекой .

Multi-Tier Концепция, согласно которой ИТ-системы управляются не по одной системе за раз, а посредством взаимодействия между несколькими системами и группами систем в четко определенном порядке. Например, веб-сервер, возможно, потребуется обновить до того, как сервер базы данных, а части веб-сервера, возможно, потребуется обновить после ЭТОГО сервера базы данных, и может потребоваться обращение к различным балансировщикам нагрузки и серверам мониторинга. Ansible моделирует целые ИТ-топологии и рабочие процессы, а не рассматривает конфигурацию с точки зрения «одной системы за раз».

# N

Namespace Первая часть полного имени коллекции. Пространство имен обычно отражает функциональную категорию контента. Пример: in cisco.ios.ios_config— ciscoпространство имен. Пространства имен зарезервированы и распределяются Red Hat по усмотрению Red Hat. Многие, но не все пространства имен соответствуют именам поставщиков. Требования к пространству имен см . в разделе « Пространства имен Galaxy» на сайте документации Galaxy.

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

# O

Orchestration Многие системы автоматизации программного обеспечения используют это слово для обозначения разных вещей. Ansible использует его как дирижер, дирижирующий оркестром. Архитектура центра обработки данных или облака состоит из множества систем, играющих множество ролей: веб-серверов, серверов баз данных, возможно, балансировщиков нагрузки, систем мониторинга, систем непрерывной интеграции и т. д. При выполнении любого процесса необходимо прикасаться к системам в определенном порядке, часто для имитации чередующихся обновлений или для правильного развертывания программного обеспечения. Одна система может выполнять одни шаги, затем другие, тогда уже обработанным предыдущим системам может потребоваться выполнить больше шагов. Попутно может потребоваться отправить электронные письма или связаться с веб-службами. Целью оркестровки Ansible является моделирование такого рода процессов.

# P

paramiko Ansible может использовать реализацию Python SSH под названием paramiko. Библиотека paramiko, как правило, быстрая и простая в управлении. Чтобы использовать paramiko, вам необходимо указать тип соединения в ваших плейбуках или использовать флаг.-c paramiko

Playbooks Playbooks — это язык, с помощью которого Ansible организует, настраивает, администрирует или развертывает системы. Их называют сборниками пьес отчасти потому, что это спортивная аналогия, и предполагается, что использовать их будет весело. Это не рабочие тетради :)

Plays Плейбук — это список пьес. Игра — это, как минимум, сопоставление между набором хостов , выбранных спецификатором хоста (обычно выбираемым группами , но иногда и именами хостов ) , и задачами , которые выполняются на этих хостах, чтобы определить роль, которую эти системы будут выполнять. В сборнике пьес может быть одна или несколько пьес.

Pull Mode По умолчанию Ansible работает в режиме push , что позволяет ему очень детально контролировать взаимодействие с каждой системой. Режим Pull предусмотрен, когда вы предпочитаете, чтобы узлы проверялись каждые N минут по определенному расписанию. Он использует программу под названием ansible-pull , а также его можно настроить (или переконфигурировать) с помощью playbook в режиме push . Большинство пользователей Ansible используют режим push, но режим pull включен для разнообразия и ради возможности выбора.

ansible-pull работает, проверяя заказы конфигурации из git в crontab, а затем управляя машиной локально, используя плагин локального подключения .

Pulp 3 Galaxy Самостоятельный сервер распространения, основанный на кодовой базе GalaxyNG и Pulp версии 3. Используйте его, чтобы находить и делиться собственным тщательно подобранным набором контента. Вы можете получить доступ к своему контенту с помощью команды.ansible-galaxy collection

Push Mode Режим Push — это режим Ansible по умолчанию. На самом деле это вообще не режим — просто так работает Ansible, когда вы об этом не думаете. Режим Push позволяет Ansible быть детализированным и проводить узлы через сложные процессы оркестрации, не дожидаясь их регистрации.

# R

Register Variable Результат выполнения любой задачи в Ansible можно сохранить в переменной для использования в шаблоне или условном операторе. Ключевое слово, используемое для определения переменной, называется register, взяв свое название от идеи регистров в программировании на ассемблере (хотя Ansible никогда не будет похож на программирование на ассемблере). Существует бесконечное количество имен переменных, которые вы можете использовать для регистрации.

Resource Model Модули Ansible работают с точки зрения ресурсов. Например, файловый модуль выберет конкретный файл и обеспечит соответствие атрибутов этого ресурса определенной модели. Например, мы можем захотеть изменить владельца на, /etc/motdесли rootон еще не установлен root, или установить его режим, 0644если он еще не установлен 0644. Модели ресурсов являются идемпотентными , что означает, что команды изменения не запускаются без необходимости, и Ansible вернет систему в желаемое состояние независимо от фактического состояния — вместо того, чтобы вам приходилось сообщать ей, как добраться до этого состояния.

Roles Роли — это единицы организации в Ansible. Назначение роли группе хостов (или набору групп , или шаблонам хостов и т. д.) подразумевает, что они должны реализовать определенное поведение. Роль может включать в себя применение определенных значений переменных, определенных задач и определенных обработчиков — или только одного или нескольких из этих элементов. Из-за файловой структуры, связанной с ролью, роли становятся распространяемыми единицами, которые позволяют вам делиться поведением между сборниками сценариев или даже с другими пользователями.

Rolling Update Одновременная адресация нескольких узлов в группе N, чтобы избежать одновременного обновления их всех и отключения системы. Например, в веб-топологии из 500 узлов, обрабатывающих очень большой объем, может быть разумно обновлять 10 или 20 компьютеров одновременно, переходя к следующим 10 или 20, когда это будет сделано. Ключевое слово в сборниках схемserial: Ansible управляет размером пула скользящих обновлений. По умолчанию размер пакета определяется сразу, поэтому вы должны согласиться на это. Конфигурация ОС (например, проверка правильности файлов конфигурации) обычно не требует использования модели последовательного обновления, но при желании это можно сделать.

# S

Serial Смотрите также

Постоянное обновление

Sudo Ansible не требует входа в систему с правами root и, поскольку он не имеет демонов, определенно не требует демонов корневого уровня (что может быть проблемой безопасности в чувствительных средах). Ansible может войти в систему и выполнить множество операций, заключенных в команду sudo, а также может работать как с sudo без пароля, так и с использованием пароля. Некоторые операции, которые обычно не работают с sudo (например, передача файлов scp), могут быть выполнены с помощью модулей копирования , шаблона и выборки Ansible при работе в режиме sudo.

SSH (Native) Собственный OpenSSH в качестве транспорта Ansible указывается с помощью (или файла конфигурации, или ключевого слова в playbook ) и может быть полезен, если вы хотите войти в систему через Kerberized SSH или использовать переходные хосты SSH и т. д. В версии 1.2.1 будет использоваться по умолчанию, если двоичный файл OpenSSH на управляющей машине достаточно новый. Раньше Ansible выбирался по умолчанию. Использование клиента, который поддерживает и рекомендуется для достижения максимальной производительности — если у вас его нет и вам не нужны Kerberos, переходные хосты или другие функции, это хороший выбор. Ansible предупредит вас, если не обнаружит возможность ControlMaster/ControlPersist.-c sshsshparamikoControlMasterControlPersistparamiko

# T

Tags Ansible позволяет помечать ресурсы в playbook произвольными ключевыми словами, а затем запускать только те части playbook, которые соответствуют этим ключевым словам. Например, можно иметь всю конфигурацию ОС и помечать определенные шаги ntp, а затем запускать только ntpшаги для перенастройки информации сервера времени на удаленном хосте.

Task Книги игр существуют для запуска задач. Задачи объединяют действие (модуль и его аргументы) с именем и, возможно, некоторыми другими ключевыми словами (например, ключевыми словами цикла ). Обработчики также являются задачами, но это особый вид задач, которые не запускаются, пока они не будут уведомлены по имени, когда задача сообщает о базовом изменении в удаленной системе.

Tasks Список задач .

Templates Ansible может легко передавать файлы в удаленные системы, но часто желательно заменять переменные в других файлах. Переменные могут поступать из файла инвентаризации , Host Vars , Group Vars или Facts . Шаблоны используют механизм шаблонов Jinja2 и могут также включать логические конструкции, такие как циклы и операторы if.

Transport Ansible использует :term: для определения типов доступных транспортов. Именно так Ansible будет обращаться к управляемым системам. Включены транспорты paramiko , ssh (с использованием OpenSSH) и local .Connection Plugins

# W

When Необязательный условный оператор, прикрепленный к задаче , который используется для определения, следует ли запускать задачу или нет. Если выражение, следующее за when:ключевым словом, имеет значение false, задача будет проигнорирована.

# V

Vars (Variables) В отличие от Facts , переменные — это имена значений (они могут быть простыми скалярными значениями — целыми числами, логическими значениями, строками) или сложными значениями (словари/хеши, списки), которые можно использовать в шаблонах и плейбуках . Это объявленные вещи, а не вещи, которые выводятся из текущего состояния или природы удаленной системы (что и есть факты).

# Y

YAML Ansible не хочет заставлять людей писать код на языке программирования для автоматизации инфраструктуры, поэтому Ansible использует YAML для определения языков конфигурации playbook , а также файлов переменных. YAML хорош тем, что имеет минимум синтаксиса, очень понятен и удобен для просмотра. Это хороший формат данных для файлов конфигурации и людей, но он также доступен для машинного чтения. Использование YAML в Ansible связано с первым использованием его Майклом ДеХааном внутри Cobbler примерно в 2006 году. YAML довольно популярен в сообществе динамических языков, и для этого формата имеются библиотеки, доступные для сериализации на многих языках (Python, Perl, Ruby и т. д.).

Источник