CM Software Configuration Management, (управление конфигурацией)
Что такое Software Configuration Management?
Управление конфигурацией - это процесс системной инженерии для обеспечения согласованности атрибутов продукта на протяжении всего срока его службы. В мире технологий управление конфигурацией - это процесс управления ИТ, который отслеживает отдельные элементы конфигурации ИТ-системы. ИТ-системы состоят из ИТ-активов, которые различаются по степени детализации. ИТ-актив может представлять собой часть программного обеспечения, или сервер, или кластер серверов. Ниже рассматривается управление конфигурацией, поскольку оно непосредственно относится к программным активам ИТ и CI/CD программных активов.
Управление конфигурацией программного обеспечения - это процесс системной инженерии, который отслеживает и контролирует изменения в метаданных конфигурации программных систем. В разработке программного обеспечения управление конфигурацией обычно используется наряду с контролем версий и инфраструктурой CI/CD. Этот пост посвящен его современному применению и использованию в agile CI/CD средах программного обеспечения.
Почему важно управление конфигурацией?
Управление конфигурацией помогает инженерным командам создавать надежные и стабильные системы с помощью инструментов, которые автоматически управляют и отслеживают обновления данных конфигурации. Сложные программные системы состоят из компонентов, различающихся по размеру и сложности. Для более конкретного примера рассмотрим микросервисную архитектуру. Каждый сервис в микросервисной архитектуре использует метаданные конфигурации для регистрации и инициализации. Некоторые примеры метаданных конфигурации программного обеспечения:
- Спецификации распределения вычислительных аппаратных ресурсов для процессора, оперативной памяти и т. д.
- Конечные точки, определяющие внешние соединения с другими службами, базами данных или доменами.
- Секреты, такие как пароли и ключи шифрования.
Эти значения конфигурации легко могут стать второстепенными, что приведет к неорганизованности и разрозненности конфигурации. Представьте себе многочисленные записки с паролями и URL-адресами, разбросанные по всему офису. Управление конфигурацией решает эту проблему путем создания источника истины с центральным расположением конфигурации.
Git - это фантастическая платформа для управления конфигурационными данными. Перемещение конфигурационных данных в репозиторий Git позволяет контролировать версии и использовать репозиторий в качестве источника истины. Контроль версий также решает еще одну проблему конфигурации: неожиданные изменения. Управление неожиданными изменениями с помощью проверки кода и контроля версий помогает свести к минимуму время простоя.
Значения конфигурации часто добавляются, удаляются или изменяются. Без контроля версий это может привести к проблемам. Один из членов команды может изменить значение распределения оборудования, чтобы программное обеспечение работало эффективнее на его личном ноутбуке. Когда программное обеспечение позже будет развернуто в производственной среде, эта новая конфигурация может иметь неоптимальный эффект или может сломаться.
Контроль версий и управление конфигурацией решают эту проблему, добавляя видимость изменений конфигурации. Когда в данные конфигурации вносятся изменения, система контроля версий отслеживает их, что позволяет членам команды просмотреть аудиторский след изменений.
Контроль версий конфигурации позволяет осуществлять откат или отмену конфигурации, что помогает избежать неожиданных поломок. Контроль версий, примененный к конфигурации, может быть быстро возвращен к последнему известному стабильному состоянию.
Список инструментов управления конфигурацией
Git
Git - ведущая в отрасли система контроля версий для отслеживания изменений кода. Добавление данных управления конфигурацией вместе с кодом в репозиторий Git обеспечивает целостное представление всего проекта в системе контроля версий. Git является основополагающим инструментом для управления конфигурацией более высокого уровня. Следующий список других инструментов управления конфигурацией предназначен для хранения в репозитории Git и использует отслеживание контроля версий Git.
Docker
Docker представил контейнеризацию, которая является продвинутой формой управления конфигурацией - подобно блокировке конфигурации. В основе Docker лежат конфигурационные файлы, называемые Dockerfiles, которые содержат список команд, оцениваемых для воссоздания ожидаемого снимка состояния операционной системы. Docker создает контейнеры из этих Docker файлов, которые представляют собой снимки предварительно сконфигурированного приложения. Dockerфайлы фиксируются в репозитории Git для отслеживания версий и нуждаются в дополнительном управлении конфигурацией для развертывания в инфраструктуре.
Ansible
В настоящее время наиболее используемый и привычный инструмент в нашей компании, Ansible, позволяет разработчику освободиться от повторений и больше сосредоточиться на стратегии. Таким образом, повседневные задачи перестают мешать сложным процессам. Фреймворк использует исполняемые XML- или YAML-файлы конфигурационных данных для задания алгоритмов настройки системы. Определенная последовательность действий затем запускается соответствующими исполняемыми файлами на основе Python. Фреймворк довольно прост в освоении и не требует отдельных агентов для управления узлами (для этого используется модуль Paramiko и стандартный SSH).
Terraform
SCM-платформа с открытым исходным кодом для удобного управления кластерами, сервисами и облачными инфраструктурными аспектами через IaC. Платформа легко интегрируется с Azure, AWS и множеством других облачных решений. Базы данных, серверы и другие важные объекты имеют индивидуальные интерфейсы и средства представления. Вы можете создавать повторяющиеся развертывания облачных инфраструктур, при этом платформа помогает вам предоставлять ресурсы AWS из текстовых файлов и автономно справляться с поставленными задачами развертывания.
Chef Infra
Ориентированные на DevOps, инфраструктурные инструменты Chef помогают достичь новых уровней гибкости, эффективности и удобства управления ИТ. В конечном итоге они помогают ускорить поставку программного обеспечения за счет быстрых и простых средств создания, тестирования и исправления новых сред, наиболее правильного развертывания новых версий программного обеспечения, повышения отказоустойчивости системы и управления рисками с помощью специальных метрик, а также помогают правильно реализовать любой тип инфраструктуры в любой среде бесперебойно и непрерывно.
Vagrant
Ориентированный на создание и поддержку сред виртуальных машин, Vagrant позволяет сократить время, необходимое для создания среды разработки, и повысить производительность. Вы также можете использовать его для удобного обмена конфигурациями виртуальных сред и средствами настройки между членами команды, не уходя далеко. Хорошим преимуществом этого продукта является то, как он обрабатывает инициализацию, предоставляя файлы данных локально, прежде чем внедрять все изменения в другие связанные среды.
TeamCity
TeamCity - это эффективное решение для управления CI и сборками от известной компании JetBrains. Платформа позволяет брать исходный код из разных систем контроля версий для использования в одной сборке, повторно использовать настройки родительского проекта в подпроекте множеством способов, эффективно обнаруживать зависшие сборки и выделять сборки, к которым нужно вернуться позже. Это отличное CI/CD-решение, позволяющее также проверять сборки через удобный Project Overview и в целом делающее рабочие процессы в различных средах более гибкими.
Puppet Enterprise
Существует две версии этого инструмента - Puppet и Puppet Enterprise. Первая имеет бесплатную версию с открытым исходным кодом, а вторая бесплатна для не более чем десяти узлов. Puppet - это высокоорганизованный инструмент, который использует модули, чтобы держать все на своих местах и быстро вносить коррективы. Таким образом, вы можете организовывать исправления, отслеживать текущие изменения, быстро планировать и осуществлять развертывание. Вы также можете управлять несколькими серверами в одном месте, определять инфраструктуру в виде кода и выполнять принудительную настройку системы.
Octopus Deploy
С помощью Octopus можно легко управлять сложными развертываниями как на физическом носителе, так и в облаке. Решение обладает всеми возможностями для устранения многих распространенных ошибок при развертывании, эффективного распределения задач по развертыванию программного обеспечения в вашей команде, безболезненного развертывания в новых незнакомых средах и, в конечном счете, увеличения обычного количества релизов в течение определенного периода времени.
SaltStack
Этот инструмент конфигурирования на основе Python предоставляет SSH и push-методы для эффективного взаимодействия между бизнесом и клиентом. По аналогии с выполнением специальных скриптов, платформа обеспечивает гораздо более тонкий и хорошо структурированный рабочий процесс с большими дозами автоматизации для сглаживания обычных процессов непрерывного внедрения и непрерывной доставки.
AWS Config
С помощью AWS Config вы можете эффективно проводить аудит, оценку и дальнейшую проверку конфигураций, связанных с ресурсами AWS. Однако настоящим удовольствием являются возможности отслеживания секретов, которые предоставляет AWS Config. Она позволяет отслеживать подробную историю конфигураций ресурсов, проверять настройки конфигураций ресурсов AWS и взаимосвязи между ними, а также определять полное соответствие конфигураций внутренним рекомендациям.
Microsoft Endpoint Manager
Возможности управления конфигурацией программного обеспечения Это средство помогает обеспечить надежную защиту конечных точек, глубокое управление устройствами и добиться большей гибкости в управлении действиями в облаке. От серверов и виртуальных машин до настольных и мобильных устройств - Endpoint Manager можно использовать для мониторинга и управления всеми видами объектов и сред, как в облаке, так и в локальной сети. Вы можете создавать удобные профили конфигурации, политики соответствия и защиты приложений, настраивать параметры Windows Update и многое другое.