Для швидшого розгортування додатків у середовищах Devops потрібно використовувати правильні інструменти. Немає єдиного інструменту, який би відповідав усім вашим потребам, таким як ініціалізація сервера, керування конфігурацією, автоматичне збирання, розгортання коду та моніторинг. Багато факторів визначають використання певного інструменту у вашій інфраструктурі. У цій статті ми розглянемо основні інструменти, які можна використовувати в типовому середовищі Devops.
1. Terraform
Terraform — це інструмент для надання інформації Infra, який не залежить від хмари. Він створений Hashicorp і написаний на Go. Він підтримує всі публічні та приватні хмарні інфраструктури. На відміну від інших інструментів керування конфігурацією, terraform чудово підтримує стан вашої інфраструктури за допомогою концепції, яка називається файлами стану. Ви можете почати працювати з Terraform за кілька днів, оскільки це легко зрозуміти. У Terraform є власний DSL під назвою HCL (мова конфігурації Hashicorp). Крім того, ви можете написати власний плагін terraform у go для своїх власних функцій. Якщо ви новачок, ви можете розпочати роботу з тераформою за допомогою цієї книги
2. Ansible
Ansible — це безагентне керування конфігурацією, а також інструмент оркестровки. В Ansible модулі конфігурації називаються «Playbooks». Підручники написані у форматі YAML, і його порівняно легко писати порівняно з іншими інструментами керування конфігурацією. Як і інші інструменти, Ansible можна використовувати для хмарного забезпечення.
Ви можете знайти всі посібники спільноти від Ansible Galaxy
3. Chef
Chef — це інструмент керування конфігурацією на основі Ruby. Chef має концепцію кулінарних книг, у яких ви кодуєте свою інфраструктуру на DSL (domain specific language) і трохи програмуєте. Шеф-кухар забезпечує віртуальні машини та налаштовує їх відповідно до правил, зазначених у кулінарних книгах. Агент працюватиме на всіх серверах, які потрібно налаштувати. Агент отримає кулінарні книги з головного сервера шеф-кухаря та запустить ці конфігурації на сервері, щоб досягти бажаного стану.
3. Puppet
Puppet також є інструментом керування конфігурацією на основі Ruby, як chef. Код конфігурації написаний за допомогою маріонеткових DSL і загорнутий у модулі. Хоча кулінарні книги шеф-кухаря більше орієнтовані на розробників, тоді як маріонетка розроблена з урахуванням системних адміністраторів. Puppet запускає маріонетний агент на всіх серверах, які потрібно налаштувати, і він витягує скомпільований модуль із маріонетного сервера та встановлює необхідні програмні пакети, вказані в модулі.
Ви можете знайти всі лялькові модулі спільноти на Puppetforge
4. Saltstack
Saltstack — це інструмент керування конфігурацією відкривань на основі Python. На відміну від chef та puppet, Saltstack підтримує віддалене виконання команд. Зазвичай у Chef і Puppet код для конфігурації буде отримано з сервера, тоді як у Saltstack код можна надіслати на багато вузлів одночасно. У Saltstack компіляція коду та конфігурації відбувається дуже швидко.
Постійна інтеграція/розгортання (CI / CD)
7. Дженкінс
Jenkins — це інструмент безперервної інтеграції на основі Java для швидшої доставки програм. Jenkins має бути пов’язаний із системою контролю версій, наприклад GitHub або SVN. Щоразу, коли новий код надсилається до сховища коду, сервер Jenkins збиратиме та тестуватиме новий код і сповіщатиме команду про результати та зміни.
Jenkins — це вже не просто інструмент CI. Дженкінс використовується як інструмент оркестровки для побудови конвеєрів для підготовки та розгортання програми. Його нова функція конвеєра як коду дозволяє зберігати конвеєри CI/CD як повний код.
8. Vagrant
Vagrant — чудовий інструмент для налаштування віртуальних машин для середовища розробки. Vagrant працює поверх таких рішень віртуальної машини, як VirtualBox, VMware, hyper-V тощо. Він використовує файл конфігурації під назвою Vagrantfile, який містить усі налаштування, необхідні для віртуальної машини. Після створення віртуальної машини її можна надати іншим розробникам для того самого середовища розробки. vagrant має плагіни для надання хмари, інструменти керування конфігурацією (кухар, маріонетка тощо) і Docker.
9. Docker
Docker працює над концепцією віртуалізації рівня процесу. Docker створює ізольоване середовище для програм, які називаються контейнерами. Ці контейнери можна відправити на будь-який інший сервер без внесення змін до програми. Docker вважається наступним кроком у віртуалізації. Docker має величезну спільноту розробників, і він набуває величезної популярності серед практиків Devops і піонерів у хмарних обчисленнях.
Керування конфігурацією/секретами
10. Consul
Consul — це високодоступне сховище ключових значень з відкритим кодом. В основному використовується для виявлення служб. Якщо у вас є сценарій використання для зберігання та отримання конфігурацій у режимі реального часу, consul — це правильний варіант.
11. etcd
etcd — ще одне сховище значень ключів з відкритим кодом, створене командою CoreOS. Це один із ключових компонентів, який використовується в Kubernetes для зберігання стану операцій кластера та керування ним.
12. Vault
Vault — це інструмент із відкритим кодом для зберігання та отримання секретних даних. Він надає багато функцій для зберігання секретного ключа в зашифрованому вигляді. Ви можете створювати списки керування доступом, політики та ролі, щоб керувати тим, як кінцеві користувачі матимуть доступ до секретів.
Моніторинг
13. Prometheus & Alert Manager
Prometheus — система моніторингу з відкритим кодом. Він дуже легкий і спеціально створений для моніторингу сучасних програм. Він підтримує моніторинг серверів і контейнерів Linux.
Він має готову підтримку моніторингу Kubernetes і Openshift. Менеджер сповіщень керує всіма налаштуваннями сповіщень для показників моніторингу.
14. New relic
New relic — це хмарне (SaaS) рішення для моніторингу програм. Він підтримує моніторинг різноманітних додатків, таких як Php, Ruby, Java, NodeJS тощо. Це дає вам інформацію про вашу запущену програму в реальному часі. Для отримання даних у реальному часі у вашій програмі слід налаштувати новий реліктовий агент. New relic використовує різні показники, щоб надати цінну інформацію про програму, яку вона відстежує.
15. Sensu
Sensu — це платформа моніторингу з відкритим кодом, написана на Ruby. Sensu — це інструмент моніторингу, створений спеціально для хмарних середовищ. Його можна легко розгорнути за допомогою таких інструментів, як шеф-кухар і лялька. Він також має корпоративну версію для моніторингу.
16. Datadog
Datadog також є хмарною (Saas) програмою та рішеннями для моніторингу серверів. Ви можете контролювати контейнери докерів та інші програми за допомогою Datadog.
Інші інструменти, які варто розглянути,
Riemann (інструмент моніторингу відкритого коду)
AppDynamics (Для моніторингу програм)
Logz.io (для аналізу та керування журналами)
Splunk (аналіз журналу та сповіщення)
В наступних статтях ми до них повернемося.
Коментарі