Salt за 10 хвилин

SaltStack — система управління конфігураціями та віддаленого виконання операцій.
У даний момент вивчаю цю систему та раз уже є така можливість вирішив перекладати треба статті з офіційного сайту і повыкладывать тут поки вистачить ентузіазму. Оскільки у нас в організації використовується в основному Red Hat і Centos, перекладати буду частини стосуються цих операційних систем.

Дана стаття являє собою переклад офіційній документації. Внизу сторінки ви знайдете посилання на першоджерело англ. мовою.

Установка SALT
Установка salt-master, salt-minion з офіційного репозиторію SaltStack на RHEL / CENTOS

sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm

Увага! При установці на Red Hat Enterprise Linux 7 з відключеними (не підписаними на) 'RHEL Server Releases' або 'RHEL Server Optional Channel' репозиторіями, додайте CentOS 7 GPG key URL до конфігурації yum репозиторію SaltStack для встановлення базових пакетів.

[saltstack-repo]
name=SaltStack repo for Red Hat Enterprise Linux $releasever
baseurl=https://repo.saltstack.com/ням/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/ням/redhat/$releasever/$basearch/latest/SALTSTACK-GPG KEY.pub
https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/base/RPM-GPG KEY-CentOS-7
sudo yum clean expire-cache

Встановіть salt-minion, salt-master та інші Salt компоненти:

sudo yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud salt-api

Запуск SALT
Salt працює по топології Master(сервер) / Minion(клієнт). Міньйони підключаються до майстра на порти TCP 4505,4506.

Дефолтна конфігурація Майстра підходить для переважної більшості установок. Salt Master управляється локальними сервіс менеджерами:

На системах з systemd (нові Debian, OpenSuse, Fedora, Centos, RHEL):

systemctl start salt-master

На системах з Вискочка (Ubuntu, older Fedora/RHEL):

service salt-start master

Альтернативно, Майстер може бути запущений через командний рядок як демон:

salt-master -d

Майстер може бути запущений в debug режимі, таким чином значно збільшуючи виведення команд:

salt-master -l debug

Майстер приймає вхідні з'єднання на портах TCP 4505,4506.

Пошук SALT MASTER
За замовчуванням конфігураційні файли лежать в каталозі /etc/salt. Більшість платформ дотримуються цієї схеми, але такі платформи як FreeBSD і Windows розташовують цей файл в інших місцях.
При старті Міньйон за замовчуванням шукає в мережі хост з hostname salt. Якщо знайшов, то Міньйон ініціює процес рукостискання і аутентифікації по ключу з Майстром. Це означає, що найпростіший спосіб конфігурації це налаштувати внутрішній DNS на дозвіл імені salt IP Майстра.

Якщо такий підхід не влаштовує, то можна внести зміни у /etc/salt/minion:

master: hostname_master

або

master: IP_master

Налаштування SALT MINION
Міньйон може функціонувати як з Майстром так і без нього. Це керівництво припускає, що Він буде підключений до Майстра, для отримання інформації про те, як запустити Міньйон без Майстри дивіться тут.

Після того, як Майстер може бути знайдений, запустити Міньйон можна так само, як Майстра:

На системах з systemd (нові Debian, OpenSuse, Fedora, Centos, RHEL):

systemctl start salt-minion

На системах з Вискочка (Ubuntu, older Fedora/RHEL):

service salt-minion start

Як демон:

salt-minion -d

В фоновому режимі, з параметром debug:

salt-minion -l debug

Коли Міньйон запускається, він генерує id, якщо він не був згенерований під час попереднього запуску і кешує в /etc/salt/minion_id за замовчуванням. Це ім'я по якому Він буде намагатися аутентироваться на Майстра. Такі кроки робляться, щоб спробувати знайти значення відмінне від localhost:

  • Виконується функція socket.getfqdn()
  • Перевіряється /etc/hostname (не на Windows)
  • Перевіряється /etc/hosts ( %WINDIR%\system32\drivers\etc\hosts на Windows )
Якщо вищеописані методи не справили id відмінний від localhost, то перевіряється отсортированый лист IP адрес (виключаючи діапазон 127.0.0.0/8) на Міньйоні. Першим використовується публічно-маршрутизируемый IP-адресу, якщо є хоч один. Інакше використовується перший приватно-маршрутизируемый IP-адресу.

Якщо нічого не спрацювало, то localhost використовується як запасний варіант.

id Міньйона може бути заданий вручну використовуючи параметр id у файлі конфігурації Міньйона. Якщо цей параметр заданий, то він буде перекрити всі інші джерела id.
Тепер, коли Він запущений, він буде генерувати криптографічні ключі і намагатися підключитися до майстра. Наступним кроком треба повернутися до Майстра і прийняти новий відкритий ключ Міньйона.

Використання SALT-KEY
salt-key
Salt аутентифікує Міньйонів використовуючи відкритий ключ шифрування і аутентифікації. Щоб Він міг почати приймати команди від Майстра ключ повинен бути прийнятий Майстром.

Команда salt-key використовується для управління всіма ключами на Майстра. Для перегляду всіх ключів, які знаходяться на Майстра:

salt-key -L

Будуть виведені ключі, які були прийняті, відхилені і перебувають в очікуванні прийняття. Найпростіший спосіб прийнятий ключ міньйона це прийняти всі відкладені ключі:

salt-key -A

Ключі повинні бути перевірені! Виведіть відбиток ключа Майстра запустивши salt-key -F master на Майстра. Скопіюйте master.pub відбиток з секції Local Keys і потім встанови це значення як master_finger конфігурації.

# salt-key -F master
Local Keys:
master.pem: 6c:a0:e8:b0:84:36:59:86:b6:49:c3:fb:87:a4:c4:e9
master.pub: d9:c6:e0:42:76:e5:82:f7:13:6a:65:ee:cb:f3:2e:aa

Скопіюйте значення відбитка master.pub з секції Local Keys і встановіть в якості параметра master_finger в конфігураційному файлі Міньйона. Збережіть і перезавантажте сервіс salt-minion.

На Майстрі запустіть salt-key -f minion_id, щоб надрукувати відбиток публічного ключа Міньйона, який був прийнятий Майстром. На Міньйоні запустіть salt-call key.finger --local, щоб надрукувати відбиток ключа Міньйона.

На Майстрі:

# salt-key -f foo.domain.com
Unaccepted Keys:
foo.domain.com: 39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9

На Міньйоні:

# salt-call key.finger --local
local:
39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9

Якщо збігаються, то візьміть ключ командою:

salt-key -a foo.domain

Посилка перших команд
Зараз, коли він підключений до Майстра і аутентифікований, Майстер може відправляти команди Міньйон. Salt-команди дозволяють виконати великий набір функцій і для конкретних Міньйонів або груп Міньйонів. Salt-команди складаються з опцій команд, опису цілі, функції виконання та аргументів функції.

Проста команда виглядає так:

salt '*' test.ping

Зірочка ( * ) визначає мета, яка визначає всіх Міньйонів. test.ping говорить миньонам запустити функцію test.ping. У разі test.ping, test посилається на модуль виконання. ping посилається на функцію ping що міститься в цьому модулі.

Увага! Виконавчі модулі — це робочі конячки Salt. Вони виконують роботу в системі виконуючи різні завдання, такі як маніпулювання файлами і рестарт сервісів.
Результатом виконання цієї команди буде оповіщення Майстра, що всі міньйони виконали test.ping паралельно і повернення результату.

Це насправді не ICMP ping, а скоріше проста функція, яка повертає True. Використання test.ping це хороший спосіб підтвердження що Він підключений.

Кожен Міньйон реєструє себе з унікальним ID. Цей ID за замовчуванням є hostname, але може бути явно вказано в конфіги Міньйона також за допомогою параметра id.

Звичайно існують сотні інших модулів, які можуть бути викликані просто як test.ping. У наступному прикладі повертається використання диска на всіх Миньонах.

salt '*' disk.usage

Знайомство з функціями
Salt поставляється з великою бібліотекою функцій, доступних для виконання і Salt функції є самодокументирующимися. Щоб побачити які функції доступні на Миньонах виконайте sys.doc функції:

salt '*' sys.doc

Вона покаже дуже великий список доступних функцій і документацію з ним.

Увага! Документація модулів також може бути доступна сайт.
Источник
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.