Нещодавно, я почав вивчати SaltStack, хотілося б поговорити в даній статті «Принципи роботи і структура SaltStack» про принципи роботи і про структуру самого SaltStack.
Ця тема для початківців і ви отримаєте основи SaltStack і як все в ньому працює:
- Установка і настройка SaltStack (Говорилося в попередній моїй статті).
- Віддалено виконувати команди у всіх керованих системах (Говорилося в попередній моїй статті).
- Проектування, розробка та розгортання системних конфігурацій (Поговоримо про це).
- Використання Salt Reactor-а для автоматизації інфраструктури (Поговоримо про це).
- Координація складних операцій управління, використовуючи SaltStack Orchestration (Поговоримо про це).
структура Salt
Для наочності, наведу скріншот:
- SaltStack Components - Компоненти SaltStack.
- SaltStack Flexibility - Гнучкість SaltStack.
- SaltStack Speed - Швидкість SaltStack.
- SaltStack Fundamentals - Основи SaltStack.
- Configuration management - Управління конфігураціями.
А зараз, я розповім про кожен компонентах в більш докладної формі.
У SaltStack є досить велика кількість компонентів, і зараз я розповім про них і навіщо вони потрібні:
- Salt Master
Центральна система управління. Ця система використовується для передачі команд і конфігурацій на minion-и, які працюють на керованих системах. - Salt Minions
Керована система. Ця система отримує команди і налаштування від salt-master. - Execution Modules
Спеціальні команди, що виконуються з командного рядка з однієї або декількох керованих систем. Корисно для: -Моніторинг в режимі реального часу, статусу та інвентарю.
-Разових команд і скриптів.
-Розгортання критичних оновлень. - Formulas (States)
Декларативні або необхідні уявлення конфігурацій системи. - Grains
Системні змінні. Grains - це статична інформація про що лежить в основі керованої системи і включають в себе операційну систему, пам'ять, і багато інших властивостей системи. Ви також можете задати користувальницькі grains для будь-якої системи. - Pillar
Змінні пределяет користувачем. Ці безпечні змінні визначені і збережені на salt-master, а потім «призначені» (assigned) на одну з / або кілька нод (міньйонів) з використанням targets. Компонент зберігає значення даних (порти, шляхи до файлів, параметри конфігурації і паролі). - Top File
Формули (Formulas) і дані pillar для salt-minion-ів. - Runners
Модулі, які виконуються на salt-master-е для виконання завдань. Runners повідомляють стан завдання, статус з'єднання, читання даних із зовнішніх інтерфейсів, запити пов'язані з salt-minion-ів і багато другое.Напрімер, Orchestrate runner координати розгортання конфігурації між багатьма системами. - Returners
Відправляє дані, які повертаються salt-minion-ами на іншу систему, наприклад, бази даних. Returners можуть запускатися на salt-minion-ах або на salt-master-е. - Reactor
Trigger реакції, коли події відбуваються у вашій SaltStack середовищі. - Salt Cloud / Salt Virt Надання системи на хмарних провайдерів (cloud providers) / Гіпервізор (hypervisors) і негайно привести їх в управління. Іншими словами - створення повного контролю docker / AWS і ін.
- Salt SSH
Виконувати salt команди через SSH на системах, які не мають встановлених salt-minion-ів.
SaltStack може бути реалізований, щоб слідувати найбільш популярних моделей управліннями системам:
- Агент і сервер.
- Тільки агент.
- Тільки сервер.
- Будь-яке або всі вище перераховане в тому ж середовищі.
Стандартна модель для управління конфігурацією. Сервер посилає команди і конфігурації агентам, що працюють на великій кількості систем, а результати повертаються на сервер.
Якщо ви уникли інструментів управління, тому що ви не хочете налаштовувати всі ці «речі», ймовірно дана модель для вас. Salt-agent-и можуть виконувати завдання управління с / або без участі сервера.
Якщо ви не хочете використовувати сервер управління, ви просто не створите. Ви можете переміщатися вперед і назад між цією моделлю і агентом і моделлю сервера або використовувати їх разом.
Salt команди можуть бути виконані на віддалених системах використовують SSH замість salt-agent-а. Налаштування всіх веб-серверів, що використовують salt-agent, але виконують спеціальні завдання управління на серверах баз даних через SSH. Це повністю залежить від вас.
РОЗМІР НЕ ПІДХОДИТЬ ВСІМ
SaltStack в даний час забезпечує оркестровку (orchestration), управління конфігураціями, реактори подій, хмарами виділених ресурсів, і багато іншого, все побудовано навколо високошвидкісній шині SaltStack.
Salt-master встановлює постійні з'єднання для всіх керованих систем і використовує легкі протоколи для того, щоб в режимі реального часу з тисячами керованих систем.
SaltStack забезпечує підключаються архітектури, що дозволяє розширити практично будь-яку частину системи. Наприклад, ви можете легко додати модулі, відправити результати завдання на нову систему, і використовувати маяки (beacons) для моніторингу будь-якій частині керованої системи.
Я розповім про наступне:
- Як встановити SaltStack.
- Як запускати команди на керованих системах.
- Визначити (написати) конфігурації.
- Як застосовувати команди і конфігурації для конкретних систем.
Я буду використовувати свій мак щоб створити просту SaltStack середу. Але для початку варто виконати:
Salt команди виконуються з використанням загальної структури:
target (російська назва «Мета»): Визначає, які системи приймають команду. Використовуючи ім'я хоста за замовчуванням, але є багато інших способів для вибору і фільтрів, який я розповім в подальшому. В даний час, це досить, щоб знати, що «*» призначене для всіх керованих систем (буде виконуватися на всіх міньенах).
command (module.function), російська назва «команди»: Це, як використовувати реальне управління в salt. Команди складаються з модулів і функцій, і в salt випускається з вбудованими модулями для установки програмного забезпечення, копіювання файлів, перевірки послуг і багато інших завдань для автоматизації.
arguments (російська назва «аргументи»): Забезпечує будь-яких додаткових даних які необхідні при виклику функцій. Наприклад, c функцією «pkg.install» можна встановити пакети і виконується це за допомогою аргументу.
ПОКАЗАТИ СПИСОК МЕРЕЖЕВИХ ІНТЕРФЕЙСІВ.
Я розповідав як встановити SaltStack в моїй статті:
А зараз, найцікавіше, зараз я розповім як створювати Salt state.
Трохи про SALT state
Віддалене виконання зберігає багато вашого часу, але вона має деякі недоліки. Більшість завдань, які ви виконуєте - комбінація багатьох команд, тестів і операцій, кожен зі своїми нюансами. Часто робиться спроба об'єднати всі ці дії в центральній скрипт, але вони виходять досить громіздкими.
Щоб вирішити цю проблему, управління конфігурацією SaltStack дозволяє створити шаблон конфігурації для повторного використання, називається стан (state), яке описує все необхідне, щоб створити компонент або додаток системи певною конфігурації.
Ось скріншот:
Formula (формула).
Колекція state і pillar файлів, які налаштовують додаток або компонент системи. Більшість формул (Formulas) складаються з декількох state, розкиданих по декільком state файлів.
State (стейт).
state - це конфігураційний файл, який налаштовує певну частину системи. Кожен state визначається за допомогою state декларації.
State Declaration (стейт декларація).
Розділ верхнього рівня state файлу в якому перераховані state виклики функцій і аргументів, які складають сам state. Кожен state декларація починається з унікального ідентифікатора (ID).
State Functions (стейт функції).
Команди, які ви називаєте, щоб виконати завдання для налаштування системи.
State File (стейт файл).
Файл з розширенням SLS, який містить один або кілька state декларацій.
state можуть перезапустити служби при внесенні змін, копіювати цілі каталоги і багато іншого.
Топ-файл (Top) використовується для застосування декількох state файлів на нодах. Стейт, які застосовуються до кожної системі визначаються цілями (targets), зазначеними в топ файлі.
СТВОРЕННЯ СВОГО ВЛАСНОГО TOP ФАЙЛА.
Перш, ніж ми створимо топ-файл, потрібно хвилинку подумати про те як виглядають системні конфігурації. Розглянемо різні типи системних налаштувань. Кожна система може отримати кілька конфігурацій, тому почнемо з найзагальніших конфігурацій.
Наприклад, ви можете почати з простого опису, наприклад:
У парадигмі SaltStack, сам список буде топ-файлом і кожен пункт у списку буде state-м. Targets використовуються в топ-файлі, щоб визначити, які state застосовуються до кожного Міньйон.
Наступний приклад показує як ваша конфігурація може бути переведена на YAML в Тop-файлі:
Коли топ-файл оцінюється, міньйон виконують всі Стейт (state), які визначені для будь-якої мети (target). Наприклад, система з міньйонами має ідентифікатор ATL-Web4-Prod і повинен застосуватися vim, скрипти, користувачі, apache, python, і django state-и.
Тепер, коли ми розуміємо, мета топ-файлу - це дозволяє йти вперед і створювати нові. Якщо ви використовуєте демо файли Vagrant, то ви помітите, що вже є файл top.sls в папці saltstack / salt, так що ми просто оновимо це, або ви можете створити новий файл. Додайте наступний код в ваш top.sls файл: