October 28

Система управления конфигурациями

Система управления конфигурациями

Исходный сайт представленного материала: r4ven.me

Приветствую!

Сегодня в словарике линуксоида🐧 термин – системы управления конфигурациями. Данные системы уже давно являются неотъемлемой частью процесса администрирования IT инфраструктуры🧑‍💻. По традиции дадим определение термину, узнаем какие существуют типы и популярные реализации подобных систем. Ну и коротко про преимущества и недостатки🧐.

Присоединяйтесь к нашему каналу в телеграм: t.me/r4ven_me, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат: t.me/r4ven_me_chat.

Обращаю ваше внимание, что этот теоретический пост📗 предшествует будущим материалам по Ansible🛠. В числе которых: статья по установке и настройке, плейбук по базовой конфигурации Linux сервера, плейбук по развертыванию OpenConnect сервера и клиента и т.д. Идей у меня много😉.

Вместо введения: зачем нужны системы управления конфигурациями?

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

Снижение затрат на администрирование. CM-системы автоматизируют рутинные задачи, снижая нагрузку на администраторов и давая им возможность сконцентрироваться на стратегических задачах.

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

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

бла бла бла😶‍🌫️

Немного из истории CM-систем

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

Одной из первых таких систем была CFEngine, созданная Марком Берджессом в 1993 году. Она положила начало автоматизированным CM-инструментам, установив базовые принципы, которые до сих пор используются в более современных системах. CFEngine разрабатывалась на фоне UNIX-систем и была построена вокруг идеи поддержания состояния серверов. Со временем её идеи распространились и повлияли на появление других систем, таких как Puppet и Chef.

Про типы CM-систем

CM-системы можно разделить на два типа: push и pull ориентированные. Эти подходы определяют, как именно CM-системы взаимодействуют с управляемыми серверами.

  1. Push-ориентированные системы
    В push-системах центральный сервер управления отправляет команды на целевые машины. Этот подход даёт полный контроль над процессом развертывания. Одним из самых известных примеров push-системы является Ansible.
  2. Pull-ориентированные системы
    В pull-системах агенты, установленные на целевых машинах, регулярно обращаются к серверу за обновлениями. Это позволяет автоматизировать процесс управления конфигурацией даже в распределённых системах. Примером такой системы является Puppet.

Популярные CM-системы и их особенности

  1. Ansible (наше всё🙃)
    • Написан на: Python;
    • Лицензия: GPL 3.0;
    • Преимущества: простота настройки, отсутствие агентов (использует лишь SSH и Python), поддержка YAML для описания конфигураций;
    • Недостатки: последовательное выполнение задач может замедлять работу в крупных средах;
    • Из истории: Созданная Михаэлом ДеХааном в 2012 году, Ansible развивалась как лёгкое решение для DevOps-задач, и вскоре была приобретена компанией Red Hat. Интересно, что несмотря на свою молодость, Ansible оказалась настолько успешной, что стала одним из стандартов CM.
  2. Puppet
    • Написан на: Ruby;
    • Лицензия: Apache License 2.0;
    • Преимущества: зрелый инструмент с большим сообществом, поддерживает декларативный стиль конфигураций, подходит для крупных компаний;
    • Недостатки: требует установки агентов, сложен для новичков;
    • Из истории: Puppet был разработан в 2005 году Люком Каньесом, когда необходимость в управлении конфигурациями для масштабных сред уже была очевидна. Puppet Labs, компания, стоящая за Puppet, активно участвовала в формировании подходов к DevOps. На основе Puppet строили свои инфраструктуры крупнейшие компании, такие как Google, Oracle, Cisco и др.
  3. Chef
    • Написана на: на Ruby (клиентская часть) и Erlang (серверная часть);
    • Лицензия: Apache License 2.0;
    • Преимущества: гибкость, поддержка Ruby и высокая степень кастомизации;
    • Недостатки: высокий порог вхождения для тех, кто не знаком с Ruby, необходимость установки агентов;
    • Из истории: Chef, созданный в 2009 году, вдохновлялся идеями Puppet, но предоставил больше свободы за счёт возможности использования Ruby для программирования инфраструктуры. Это помогло компании Opscode (ныне Chef) привлечь к инструменту специалистов, ориентированных на программирование. Chef была одной из первых CM-систем, активно поддерживавших идеи DevOps.
  4. SaltStack
    • Написан на: Python;
    • Лицензия: Apache;
    • Преимущества: высокая скорость работы, поддержка как push-, так и pull-ориентированной модели;
    • Недостатки: может быть сложен в настройке;
    • Из истории: SaltStack был выпущен в 2011 году и привлёк внимание благодаря быстрой обработке команд и гибкости. В отличие от других систем, SaltStack предоставляет гибридный подход, что делает его популярным в высоконагруженных средах.

Заключение

Системы управления конфигурациями прошли долгий путь от первых разработок в 1990-х годах до современных решений, таких как Ansible, Puppet, Chef и SaltStack. Каждое из этих решений обладает своими особенностями и преимуществами, которые делают их подходящими для определённых задач и сред. Выбор инструмента, как это часто бывает, зависит от потребностей, инфраструктуры и уровня требований к управлению🤵‍♂️.

В ближайшее время на сайте Вороний блог выйдет вводная заметка по установке и начальной настройке системы управления конфигурациями – Ansible. Предпочтение данной CM отдано по очевидным причинам: описание конфигураций в удобном Yaml, при работе необходим лишь SSH и установленный Python на удаленном сервере. Хотя фактически можно обойтись из без Python, но это больше для гурманов🤪.

Обязательно подписывайтесь на наш телеграм канал @r4ven_me📱, чтобы не пропустить новые посты, а если возникли вопросы или просто есть желание поболтать про Linux и Open source – добро пожаловать в наш чат @r4ven_me_chat💬. У нас там вежливое микросообщество🤓.

Спасибо, что читаете!

Полезные источники