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

Вступление

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

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

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

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

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

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

Быстрое предоставление новых серверов

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

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

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

Нет новых серверов Snowflake

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

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

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

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

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

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

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

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

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

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

Автоматизация

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Стоимость

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

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

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

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

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

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

Ansible Puppet Chef
Язык сценария YAML Пользовательский DSL на основе Ruby Ruby
инфраструктура Контроллер-машина применяет конфигурацию на узлах через SSH Puppet Master синхронизирует конфигурацию на кукольных узлах Шеф-повар Workstations настраивает конфигурацию на Chef Server, из которого будут обновлены узлы шеф-повара
Требуется специализированное программное обеспечение для узлов нет да да
Обеспечивает централизованную точку управления Нет. Любой компьютер может быть контроллером Да, через Марионеток Да, через Chef Server
Терминология сценария Playbook / Роли Манифесты / Модули Рецепты / Поваренные книги
Заказ выполнения задачи последовательный Непоследовательный последовательный

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

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

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

Заключение

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

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

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