Управление конфигурацией — это процесс учета изменений, вносимых в систему с целью сохранения ее целостности. Обычно используются инструменты и методы, способствующие автоматизации процесса и наблюдению состояния системы. Хотя эта концепция родилась не в ИТ-индустрии, термин стал широко использоваться для обозначения управления конфигурацией сервера.
В контексте серверов управление конфигурацией также часто называют ИТ-автоматизацией или оркестрацией сервера. Оба термина освещают практические аспекты управления конфигурацией, а также возможность контроля нескольких систем с центрального сервера.
Из этого руководства вы узнаете о преимуществах использования инструментов управления конфигурацией для автоматизации настроек серверной инфраструктуры на примере системы управления Ansible.
На рынке присутствует целый ряд инструментов управления конфигурацией разного уровня сложности и с разными архитектурами. Хотя все эти инструменты отличаются характеристиками и принципами работы, все они выполняют одну и ту же функцию: обеспечивают соответствие системы параметрам, заявленным в наборе скриптов конфигурирования.
Преимущества управления конфигурацией серверов состоят в способности определять вашу инфраструктуру как код. Это позволяет:
К тому же инструменты управления конфигурацией предлагают возможность централизованного контроля неограниченного числа серверов из одной точки. Это может значительно повысить производительность и укрепить целостность инфраструктуры.
Ansible — это современный инструмент управления конфигурацией, который упрощает настройку и удаленное администрирование серверов. Минималистичный дизайн инструмента обеспечивает простое и понятное использование.
Пользователи пишут скрипты конфигурирования Ansible в удобном формате сериализации данных YAML, который не привязывается к какому-либо языку программирования. Это позволяет пользователям интуитивно создавать сложные скрипты конфигурирования, в отличие от аналогичных инструментов такой же категории.
Ansible не требует установки специального программного обеспечения на узлах, где будет работать эта система. Контрольный механизм, настроенный в программном обеспечении Ansible, связывается с узлами через стандартные каналы SSH.
Как инструмент управления конфигурацией и система автоматизации Ansible имеет все функции, присутствующие в других инструментах этой же категории, но при этом данная система ориентируется на простоту использования и производительность:
Ansible отслеживает состояние ресурсов управляемых систем для недопущения повторения задач, которые выполнялись ранее. Если пакет уже установлен, система не будет пытаться установить его снова. Основной задачей является то, что при каждом исполнении система достигает (или сохраняет) желаемое состояние, даже если вы запускаете ее несколько раз. Это означает, что системе Ansible и другим инструментам управления конфигурацией присуще идемпотентное поведение. При запуске плейбука вы увидите статус каждой выполняемой задачи и указание, приводит ли выполненная задача к изменению системы.
При написании скриптов автоматизации Ansible вы можете использовать переменные, условия и циклы, чтобы сделать процесс автоматизации более универсальным и эффективным.
Ansible собирает серию подробных данных об управляемых узлах, например сетевых интерфейсах и операционной системе, и обозначает эти данные как глобальные переменные, называемые системными сведениями. Сведения можно использовать внутри плейбуков, чтобы обеспечить универсальность и адаптивность автоматизации, работающей по-разному в зависимости от системы конфигурирования.
Ansible использует систему шаблонов Jinja2 Python, разрешающую динамические выражения и доступ к переменным. Шаблоны можно использовать для облегчения настройки файлов и служб конфигурации. Например, вы можете использовать шаблон для настройки нового виртуального хоста в Apache, а также использовать такой же шаблон для нескольких установок сервера.
Ansible поставляется с сотнями встроенных модулей, упрощающих автоматизацию стандартных задач администрирования, таких как установка пакетов с помощью apt
и синхронизация файлов через rsync
, а также работа с популярными программами, например системами базы данных (MySQL, PostgreSQL, MongoDB и др.) и инструментами управления зависимостями (PHP composer
, Ruby gem
, Node npm
и др.). Помимо этого существует ряд способов расширения системы Ansible. Это плагины и модули, которые необходимы для обеспечения пользовательских функций, не включенных по умолчанию.
Вы также можете использовать модули и плагины сторонних организаций, представленные на портале Ansible Galaxy.
Давайте рассмотрим терминологию и концепции Ansible, чтобы познакомиться с терминами, которые будут употребляться в этой серии материалов.
Узел управления — это устройство с установленной и настроенной для подключения к вашему серверу системой Ansible. Вы можете использовать несколько узлов управления, а любая система, на которой возможен запуск Ansible, может быть настроена как узел управления, включая персональные компьютеры или ноутбуки на базе операционных систем Linux или Unix. На данный момент Ansible нельзя установить на хосте Windows, но вы можете обойти это ограничение, настроив виртуальную машину под управлением Linux и запустив на ней Ansible.
Системы, которыми вы управляете с помощью Ansible, называются управляемыми узлами. Для работы Ansible необходимо, чтобы управляемые узлы были доступны через каналы SSH и на них был установлен Python 2 (версия 2.6 или выше) или Python 3 (версия 3.5 или выше).
Ansible поддерживает различные операционные системы в качестве управляемых узлов, включая серверы Windows.
Файл инвентаризации содержит список хостов, которыми вы будете управлять при помощи Ansible. Хотя Ansible обычно создает файл инвентаризации по умолчанию при установке, вы можете использовать файлы инвентаризации для каждого проекта отдельно. Это обеспечит лучшее разделение инфраструктуры и позволит избежать ошибочного выполнения команд или плейбуков не на том сервере. Статические файлы инвентаризации обычно создаются как файлы .ini
, но вы также можете использовать динамически сгенерированные файлы, написанные на любом языке программирования, способном возвращать JSON.
В Ansible задача — это отдельная часть работы, которую нужно выполнить на управляемом узле. Каждое действие, которое нужно выполнить, определяется как задача. Задачи можно выполнять как единичные действия через ситуативные команды или же включать их в плейбуки в качестве части скрипта автоматизации.
Плейбук состоит из списка заданных задач и нескольких директив, указывающих, какой хост является целью автоматизации, а также нужно ли использовать систему эскалации привилегий для выполнения этих задач. В плейбук также могут быть включены дополнительные разделы для определения переменных или включения файлов. Ansible выполняет задачи последовательно, а полноценное выполнение плейбука называется плей. Плейбуки записываются в формате YAML.
Обработчики используются для выполнения действий со службами, например при перезагрузке или остановке службы, которая активно работает на системе управляемого узла. Обработчики обычно запускаются с помощью задач, а их использование происходит в конце плея, после выполнения всех задач. В этом случае, если перезагрузку службы начинает более чем одна задача, служба запустится только один раз после выполнения всех команд. Хотя поведение обработчика по умолчанию более эффективно, также возможно принудительное немедленное выполнение обработчика, если этого требует задача.
Роль — это набор плейбуков и связанных файлов, организованных в предопределенную структуру, известную Ansible. Роли упрощают повторное использование плейбуков и превращают их в пакеты детализированной автоматизации с общим доступом для конкретных целей, таких как установка веб-сервера, среды PHP или настройка сервера MySQL.
Ansible — это минималистичный и простой для изучения инструмент ИТ-автоматизации благодаря использованию YAML в скриптах конфигурирования. Он имеет большое количество встроенных модулей, которые можно использовать для абстрактных задач, таких как установка пакетов и работа с шаблонами. Его упрощенные требования к инфраструктуре и доступный синтаксис подходят тем, кто только начинает работать с управлением конфигурацией.
В следующих материалах этой серии мы рассмотрим установку и начало работы с Ansible на сервере Ubuntu 20.04.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!