Введение в управление конфигурацией

Вступление

В качестве более широкой темы, управление конфигурацией (CM) относится к процессу систематической обработки изменений в системе таким образом, чтобы поддерживать целостность во времени. Хотя этот процесс не возник в ИТ-индустрии, этот термин широко используется для обозначения * управления конфигурацией сервера *.

Автоматизация играет важную роль в управлении конфигурацией сервера. Это механизм, используемый для того, чтобы сервер достиг желаемого состояния, ранее определенного путем предоставления сценариев с использованием определенного языка и функций инструмента. На самом деле автоматизация является сердцем управления конфигурацией для серверов, и поэтому часто называют инструменты управления конфигурацией Automation Tools или IT Automation Tools.

Другим распространенным термином, используемым для описания функций автоматизации, реализованных инструментами управления конфигурацией, является Server Orchestration или IT Orchestration, поскольку эти инструменты обычно способны управлять от одного до сотен серверов с компьютера центрального контроллера.

На рынке доступно несколько инструментов управления конфигурацией. Кукольный, Ansible, Шеф-повар и Соль являются популярным выбором. Хотя каждый инструмент будет иметь свои собственные характеристики и работать по-разному, все они руководствуются одной и той же целью: убедиться, что состояние системы соответствует состоянию, описанному вашими сценариями инициализации.

Преимущества управления конфигурацией для серверов

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

Быстрая подготовка новых серверов

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

Быстрое восстановление после критических событий

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

Нет больше серверов Снежинка

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

Контроль версий для серверной среды

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

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

Реплицированные среды

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

Обзор инструментов управления конфигурацией

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

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

Ниже вы можете найти наиболее распространенные функции, присутствующие в большинстве инструментов управления конфигурацией для серверов:

Automation Framework

Каждый инструмент CM предоставляет определенный синтаксис и набор функций, которые вы можете использовать для написания сценариев обеспечения. Большинство инструментов будут иметь функции, которые делают их язык похожим на обычные языки программирования, но упрощенным способом. Переменные, циклы и условные обозначения - это общие функции, предоставляемые для облегчения создания более универсальных сценариев обеспечения.

Идемпотентное поведение

Инструменты управления конфигурацией отслеживают состояние ресурсов, чтобы избежать повторения задач, которые были выполнены ранее. Если пакет уже установлен, инструмент не будет пытаться установить его снова. Цель состоит в том, чтобы после каждого запуска подготовки система достигала (или поддерживала) желаемое состояние, даже если вы запускаете его несколько раз. Это то, что характеризует эти инструменты как idempotent поведение. Однако такое поведение не обязательно применяется во всех случаях.

Системные факты

Инструменты управления конфигурацией обычно предоставляют подробную информацию о предоставляемой системе. Эти данные доступны через глобальные переменные, известные как facts. Они включают в себя такие вещи, как сетевые интерфейсы, IP-адреса, операционная система и распределение. Каждый инструмент предоставит свой набор facts. Их можно использовать для повышения адаптивности сценариев и шаблонов для нескольких систем.

Система шаблонов

Большинство инструментов CM предоставляют встроенную систему шаблонов, которую можно использовать для облегчения настройки файлов конфигурации и сервисов. Шаблоны обычно поддерживают переменные, циклы и условные выражения, которые можно использовать для обеспечения максимальной универсальности. Например, вы можете использовать шаблон для простой настройки нового виртуального хоста в Apache, одновременно используя один и тот же шаблон для установки на нескольких серверах. Вместо того, чтобы иметь только жестко закодированные статические значения, шаблон должен содержать заполнители для значений, которые могут меняться от хоста к хосту, например + NameServer + и + DocumentRoot +.

растяжимость

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

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

Выбор инструмента управления конфигурацией

На рынке доступно множество инструментов CM, каждый из которых имеет свой набор функций и уровни сложности. Популярные варианты включают Chef, Ansible и Puppet. Первая задача - выбрать инструмент, который подходит для ваших нужд.

Есть несколько вещей, которые вы должны принять во внимание, прежде чем сделать выбор:

Сложность инфраструктуры

Большинству инструментов управления конфигурацией требуется минимальная иерархия, состоящая из компьютера контроллера и узла, которым он будет управлять. Например, Puppet требует, чтобы приложение agent было установлено на каждом узле, а приложение master должно быть установлено на компьютере контроллера. Ansible, с другой стороны, имеет децентрализованную структуру, которая не требует установки дополнительного программного обеспечения на узлах, но использует SSH для выполнения задач обеспечения. Для небольших проектов упрощенная инфраструктура может показаться более подходящей, однако важно учитывать такие аспекты, как масштабируемость и безопасность, которые не могут быть реализованы инструментом.

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

Кривая обучения

Как упоминалось ранее в этой статье, инструменты CM предоставляют собственный синтаксис, иногда используя язык, специфичный для предметной области (DSL), и набор функций, составляющих их основу для автоматизации. Как и в случае с обычными языками программирования, для некоторых инструментов потребуется более высокая кривая обучения. Требования к инфраструктуре также могут влиять на сложность инструмента и на то, как быстро вы сможете увидеть возврат инвестиций.

Cost

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

Расширенный инструментарий

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

Сообщество и поддержка

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

Обзор популярных инструментов

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

Ansible Puppet Chef

Script Language

YAML

Custom DSL based on Ruby

Ruby

Infrastructure

Controller machine applies configuration on nodes via SSH

Puppet Master synchronizes configuration on Puppet Nodes

Chef Workstations push configuration to Chef Server, from which the Chef Nodes will be updated

Requires specialized software for nodes

No

Yes

Yes

Provides centralized point of control

No. Any computer can be a controller

Yes, via Puppet Master

Yes, via Chef Server

Script Terminology

Playbook / Roles

Manifests / Modules

Recipes / Cookbooks

Task Execution Order

Sequential

Non-Sequential

Sequential

Следующие шаги

До сих пор мы видели, как работает управление конфигурацией для серверов и что следует учитывать при выборе инструмента для построения инфраструктуры управления конфигурацией. В последующих руководствах этой серии мы познакомимся с тремя популярными инструментами управления конфигурациями: Ansible, Puppet и Chef.

Чтобы дать вам возможность сравнить эти инструменты самостоятельно, мы собираемся использовать простой пример настройки сервера, который должен быть полностью автоматизирован каждым инструментом. Эта установка состоит из сервера Ubuntu 18.04, на котором работает Apache для размещения простой веб-страницы.

Заключение

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

Related