10.12.2021

Установка и настройка Salt Master и Salt Minions на Ubuntu 18.04

Инструкция по настройке взаимодействия Salt Master и Salt Minions на серверах под управлением операционной системы Ubuntu 18.04.

Что это такое?

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

Сетевая архитектура Salt

Два основных компонента, которые содержит Salt это один Salt Master и несколько Salt Minions:

Salt Master (Мастер) - это центральная система управления, используемая для отправки команд и конфигураций в Salt Minion (ноды).

Salt Minions (Ноды, Миньоны) - это системы, которые работают на управляемых серверах и получают команды и конфигурации от мастера.

Для настройки взаимодействия потребуется минимум 2 виртуальных сервера, один для мастера и один для узла. Настройка всех узлов выполняется аналогично.

Установка Salt

Следующие действия необходимо выполнить как Master-сервере, так и на управляемых узлах.

Для начала необходимо импортировать ключ репозитория:

wget -O -
https://repo.saltstack.com/py3/ubuntu/18.04/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -

Затем необходимо добавить репозиторий с помощью следующей команды:

echo "deb http://repo.saltstack.com/py3/ubuntu/18.04/amd64/latest bionic main" | sudo tee /etc/apt/sources.list.d/saltstack.list

Обновите список системных пакетов:

sudo apt update

Установите пакеты Salt, для Master:

sudo apt -y install salt-api salt-cloud salt-master salt-ssh salt-syndic

для Minion:

sudo apt -y install salt-minion

Откройте следующие порты, чтобы компоненты могли взаимодействовать по сети:

sudo ufw allow proto tcp from any to any port 4505,4506

Настройка Salt Master

С помощью текстового редактора, например vi, откройте файл /etc/salt/master:

vi /etc/salt/master

Найдите директиву:

#interface: 0.0.0.0

Раскомментируйте найденную строку и вместо 0.0.0.0 укажите IP-адрес сервера:

interface: 121.122.121.122

После внесения изменений перезагрузите службу:

/etc/init.d/salt-master restart

Выведите на экран главный ключ, который необходим для подключения управляемых узлов, выполнив следующую команду:

salt-key -F master

Ожидаемый вывод:
Local Keys:
master.pem: c2:2b:2f:5f:91:f2:c3:8b:99:35:50:f9:eb:3f:5b:d7:e4:8d:c1:a2:50:9a:04:f9:e9:75:1b:3a:13:b3:24:0e
master.pub: 10:e1:34:61:07:03:ba:aa:c2:56:61:ba:bb:1c:af:34:55:e9:a4:66:a1:35:73:00:17:9f:2f:98:d7:71:f3:09

Скопируйте содержимое строки master.pub прямо из консоли.

Настройка Salt Minion

По умолчанию Salt Minion пытается подключиться к DNS-имени «salt». С помощью текстового редактора, например vi, откройте файл /etc/hosts:

vi /etc/hosts

Укажите IP-адрес Master Salt и имя salt, например, так:

121.122.121.122 salt

Установите идентификатор для вашей ноды, для этого откройте файл:

vi /etc/salt/minion_id

И вставьте любое удобное и понятное название без пробелов, например:

ubuntu-sys

Откройте файл конфигурации ноды:

vi /etc/salt/minion

Найдите директиву master_finger и вставьте скопированный ключ master.pub, как показано в примере:

master_finger: '10:e1:34:61:07:03:ba:aa:c2:56:61:ba:bb:1c:af:34:55:e9:a4:66:a1:35:73:00:17:9f:2f:98:d7:71:f3:09'

Сохраните изменения и выполните перезагрузку службы:

/etc/init.d/salt-minion restart

Настройка ключей

Затем подключитесь к Master-ноде и проверьте появившиеся ключи:

salt-key -L

Ожидаемый вывод:
Accepted Keys:
Denied Keys:
Unaccepted Keys:
ubuntu-sys
Rejected Keys:

Примите ключ:

salt-key --accept='ubuntu-sys'

Перед вами появится следующее диалоговое окно:
The following keys are going to be accepted:
Unaccepted Keys:
ubuntu-sys
Proceed? [n/Y] Y
Key for minion ubuntu-sys accepted.

Для проверки выполните следующую команду:

salt-key -L

Проверка Master-Minion соединения

Проверьте связь между Мастером и Миньоном, выполнив команду test.ping:

salt ubuntu-sys test.ping
ubuntu-sys:
True

Чтобы проверить связь между мастером и всеми нодами, используйте команду:

salt '*' test.ping/noindex>