|
|||||||
Время создания: 27.11.2019 10:30
Раздел: Компьютер - Linux - Оркестрация - Ansible
Запись: xintrea/mytetra_syncro/master/base/1574839834ai3jzpr7io/text.html на raw.github.com
|
|||||||
|
|||||||
Данное руководство поможет подготовить автоматизированную оркестровку сервера с помощью инструмента конфигурационного управления Ansible. Вы ознакомитесь с основными терминами, синтаксисом и функциями Ansible. В результате вы получите полностью автоматизированное простое развёртывание, которое состоит из таких этапов:
Примечание: Данное руководство сосредоточено на создании плейбуков – сценариев Ansible для автоматизации настройки. Больше о терминологии Ansible можно прочитать здесь. Внимение! Все примеры конфигураций в этой статье имеют нарушенную структуру отступов. При воспроизведении примеров нужно учитывать синтаксис YAML. Начало работыПрежде чем приступить к разработке плейбука, нужно ознакомиться с основными терминами Ansible. Терминология Ansible
Оркестровка Ansible пишется на простом языке сериализации данных YAML. ЗадачиКаждая задача определяет один шаг оркестровки. Как правило, в задачах используются модули или простые команды. Задача выглядит так: - name: This is a task Элемент name опционален, но его рекомендуется использовать, так как он отображает в выводе имя задачи, которая была выполнена. Элемент apt – это встроенный модуль Ansible, который управляет пакетами в Debian-подобных дистрибутивах. Эта задача задаёт пакету vim состояние latest, что заставит менеджер пакетов установить этот пакет в случае, если он еще не установлен. Формат плейбуковПлейбуки – точка входа для оркестровки Ansible. Они содержат данные о системах, в которых будет происходить оркестровка, а также все директивы и команды, которые нужно выполнить. Ниже можно найти пример простого плейбука, который обновляет индекс пакетов и устанавливает vim: --- - name: Update apt-cache YAML сериализует структуры данных, потому очень важно проследить, чтобы все пробелы и абзацы были на месте. Написание плейбукаПеременныеAnsible задаёт переменные несколькими способами. Самый простой из них – использование раздела vars самого плейбука. Ниже показано, как определить переменную package внутри задачи: --- package: vim tasks: - name: Install Package Переменная package доступна из любой точки оркестровки (даже в добавленных файлах и шаблонах). Использование цикловЦиклы, как правило, используются для повторения задачи с помощью различных входных значений. То есть, вместо того чтобы создавать 10 задач для установки 10 различных пакетов, вы можете создать одну задачу и использовать цикл, чтобы повторить задачу для установки любых пакетов, которые нужно установить. Чтобы создать цикл в задаче, добавьте опцию with_items и массив значений. Доступ к контенту можно получить с помощью переменной item. Например: - name: Install Packages - vim Также можно использовать массив переменных, чтобы определить компоненты: --- packages: [ 'vim', 'git', 'curl' ] tasks: - name: Install Package Использование условных выраженийУсловные выражения можно использовать для динамической настройки (например, когда на основе переменной или вывода команды нужно решить, следует ли выполнять задачу). Ниже показан пример задачи, которая будет выполнена только в системах на основе Debian. - name: Shutdown Debian Based Systems Условное выражение when принимает в качестве аргумента выражение, которое нужно оценить. Задача будет выполнена только в том случае, если выражение истинно (true). Условные выражения часто используются в IT-автоматизации, если выполнение задачи зависит от вывода команды. В Ansible условные выражения внедряются путем добавления переменной для хранения результатов выполненной команды и проверки этой переменной в следующей задаче. Вы можете проверить состояние выхода команды (успешно она выполнена или нет) и наличие в нем конкретного фрагмента (хотя для этого может потребоваться использование регулярных выражений). В приведённом ниже примере показаны две условные задачи, чьё выполнение зависит от вывода команды php –v. Данный код проверяет состояние вывода команды, поскольку она не будет выполнена в случае, если PHP не установлен на этот сервер. Раздел задачи ignore_errors позволяет продолжить оркестровку, даже если команду выполнить не удалось. - name: Check if PHP is installed Модуль debug позволяет просмотреть содержимое переменных или отладочные сообщения. Он может вывести строку (при использовании аргумента msg) или содержимое переменной (с помощью аргумента var). Использование шаблоновШаблоны обычно используются в конфигурационных файлах и позволяют добавлять переменные и другие функции, которые делают эти файлы более универсальными и обеспечивают их повторное выполнение. Ansible использует механизм шаблонов Jinja2. Ниже приведен пример шаблона для создания виртуального хоста Apache, в котором используется переменная для создания корневого каталога этого хоста: <VirtualHost *:80> Встроенный модуль template позволяет применить шаблон задачи. Если назвать файл шаблона в примере vhost.tpl и поместить его в один каталог с плейбуком, такой шаблон заменит виртуальный хост Apache по умолчанию: - name: Change default Apache virtual host Определение обработчиковОбработчики изменяют состояние сервиса (например, останавливают или перезапускают его). Обработчики очень похожи на задачи, которые выполняются один раз и в том же порядке, в каком они определены; однако они выполняются только в том случае, если ранее в задаче срабатывает директива notify. Обработчики обычно определяются как массив в разделе плейбука handlers. Рассмотрим предыдущий пример шаблона, который предназначен для создания виртуального хоста Apache. Чтобы обеспечить перезагрузку Apache после изменения виртуального хоста, нужно создать обработчик для этого сервиса. Это делается так: handlers: Директива name является уникальным идентификатором обработчика. Чтобы извлечь обработчик из задачи, используйте опцию notify. - name: Change default Apache virtual host Пример плейбукаТеперь можно собрать весь код данного руководства в один плейбук, который будет автоматизировать установку Apache в Ubuntu 14.04. Примечание: Дополненный вариант плейбука можно найти на Github. Также эта папка содержит файл Vagrant, который позволяет протестировать плейбук на упрощённой установке с помощью виртуальной машины Vagrant. --- doc_root: /var/www/example tasks: - name: Update apt handlers: - name: restart apache
ЗаключениеAnsible – это инструмент IT-автоматизации, который использует для оркестровки сценарии YAML. Он предоставляет огромное количество встроенных модулей, которые могут самостоятельно выполнять некоторые задачи (устанавливать пакеты, обрабатывать шаблоны и т.д.). Он упрощает работу с инфраструктурой, поскольку сам использует очень простой язык. |
|||||||
Так же в этом разделе:
|
|||||||
![]() |
|||||||
|
|||||||
|