Рано чи пізно будь-який DevOps стикається з необхідністю вивчати та використовувати інструменти керування конфігурацією та віддаленого виконання. Інструменти керування конфігурацією відіграють важливу роль у DevOps.
Важливість інструментів керування конфігурацією
Робота з інфраструктурою відповідно до концепції Infrastructure as Code за допомогою таких систем є необхідним мінімумом для забезпечення системного підходу до ІТ-операцій.
Основна ідея цих інструментів – забезпечення простежуваності змін, повторюваності й узгодженості, зручності, одночасного та масового застосування, а також просто якості ІТ-операцій.
Підхід Microdevops
Ми в Microdevops не могли б надавати якісні послуги без обов’язкового використання інструментів керування конфігурацією. Власне, ми робимо майже все за їх допомогою. Ось лише найпростіші приклади:
- Налаштування ОС.
- Розгортання застосунків.
- Створення користувачів.
- Керування фаєрволами.
- Запуск сервісів.
- Ну і, звісно, самі сервіси керування конфігурацією.
Топ-10 інструментів керування конфігурацією для DevOps
Якщо говорити про найкращі інструменти керування конфігурацією в DevOps, можна відзначити наступні:
- HashiCorp Terraform – сьогодні це фактичний стандарт для розгортання та налаштування інфраструктури в хмарі. Ми використовуємо його в Microdevops.
- Ansible – також майже стандарт для керування конфігурацією, але ми його не використовуємо, оскільки свого часу обрали…
- Salt (SaltStack) – схожий на Ansible (також використовує YAML і Python), є його сучасником, хоча менш популярний, зате більш функціональний: події, zeromq, агент. Більшість наших системних знань зосереджена саме в Salt. Ми використовуємо його не щодня, а щохвилини.
- CFEngine – пишуть, що він популярний, але в реальності ми його не зустрічали й не пробували.
- Chef і Puppet – класика керування конфігурацією. Дуже функціональні та зрілі, але поступаються Ansible і Salt у простоті, зрозумілості та легкості. Ми їх не використовуємо.
- Pulumi – часто згадується як альтернатива Terraform, отримує багато схвальних відгуків, але ми його не використовували – занадто радикальний підхід.
- AWS CloudFormation, Azure ARM/Bicep, Google Cloud Deployment Manager – інструменти, прив’язані до певних хмарних платформ (AWS, Azure, GCP), використовуються, якщо необхідно працювати безпосередньо в них.
Бонус: жоден із наведених інструментів не можна використовувати без ще одного важливого компонента:
- Git + GitLab/GitHub/… – оскільки маніфести конфігурації – це текстові файли у форматах YAML/JSON/Terraform тощо, їх необхідно зберігати як код (саме тому це Infrastructure as Code), а код має зберігатися в git.
Шаблон репозиторію клієнтів Microdevops та автоматизація
Окрім вищезгаданих підходів і повторно використовуваного коду Microdevops, у нас є шаблон клієнтського репозиторію, що допомагає швидко генерувати й оновлювати проєкти для клієнтів (і навіть повторно застосовувати шаблон до вже існуючих репозиторіїв!).
Більше того, наша система обліку автоматично створює клієнтські репозиторії на основі цього шаблону, додаючи в них списки серверів, тарифні плани тощо. Фактично, вона автоматично налаштовує сам код керування конфігурацією.
Ключ до успішного керування конфігурацією
На завершення можна сказати, що не так важливо, який саме інструмент керування конфігурацією ви оберете. Головне, щоб:
- Інструменти конфігурації використовувалися системно.
- Ви накопичували знання у вибраному (або декількох) інструменті.
- Ви мали достатньо експертизи для швидкого впровадження ідей та виконання завдань кодом, без ручних операцій та боргів.
За цих умов ваш DevOps буде на високому рівні!