267 lines
6.6 KiB
Markdown
267 lines
6.6 KiB
Markdown
# Краткое руководство по Salt Stack
|
||
|
||
***
|
||
|
||
- [Краткое руководство по Salt Stack](#краткое-руководство-по-salt-stack)
|
||
- [Установка Salt](#установка-salt)
|
||
- [Master на Альт сервер](#master-на-альт-сервер)
|
||
- [Minion на CentOS Stream 9](#minion-на-centos-stream-9)
|
||
- [Minion на Debian 12](#minion-на-debian-12)
|
||
- [Minion на Альт Сервер 10.2](#minion-на-альт-сервер-102)
|
||
- [Настройка master](#настройка-master)
|
||
- [Настройка minion](#настройка-minion)
|
||
- [Ключи](#ключи)
|
||
- [Первый тест](#первый-тест)
|
||
- [Источники](#источники)
|
||
|
||
***
|
||
|
||
В качестве тестового стенда используется виртуальная лаборатория
|
||
|
||

|
||
|
||
## Установка Salt
|
||
|
||
процесс установки описан в документации <https://docs.saltproject.io/salt/install-guide/en/latest/index.html>
|
||
|
||
### Master на Альт сервер
|
||
|
||
```bash
|
||
apt-get update && apt-get install -y salt-master salt-minion salt-api
|
||
|
||
systemctl enable --now salt-master
|
||
systemctl enable --now salt-minion
|
||
```
|
||
|
||
### Minion на CentOS Stream 9
|
||
|
||
```bash
|
||
sudo rpm --import https://repo.saltproject.io/salt/py3/redhat/9/x86_64/SALT-PROJECT-GPG-PUBKEY-2023.pub
|
||
curl -fsSL https://repo.saltproject.io/salt/py3/redhat/9/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo
|
||
|
||
sudo dnf install -y salt-minion
|
||
|
||
sudo systemctl enable --now salt-minion
|
||
```
|
||
|
||
### Minion на Debian 12
|
||
|
||
```bash
|
||
su -
|
||
mkdir /etc/apt/keyrings
|
||
|
||
curl -fsSL -o /etc/apt/keyrings/salt-archive-keyring-2023.gpg https://repo.saltproject.io/salt/py3/debian/12/amd64/SALT-PROJECT-GPG-PUBKEY-2023.gpg
|
||
echo "deb [signed-by=/etc/apt/keyrings/salt-archive-keyring-2023.gpg arch=amd64] https://repo.saltproject.io/salt/py3/debian/12/amd64/latest bookworm main" | tee /etc/apt/sources.list.d/salt.list
|
||
|
||
apt update
|
||
|
||
|
||
apt install -y salt-minion
|
||
|
||
systemctl enable --now salt-minion
|
||
```
|
||
|
||
### Minion на Альт Сервер 10.2
|
||
|
||
```bash
|
||
su -
|
||
apt-get update
|
||
|
||
|
||
apt-get install -y salt-minion
|
||
|
||
systemctl enable --now salt-minion
|
||
```
|
||
|
||
## Настройка master
|
||
|
||
Описание возможных директив конфигурационного файла приводится в файле `/etc/salt/master` или в документации <https://docs.saltproject.io/en/latest/ref/configuration/master.html>
|
||
|
||
Хорошим тоном является создание своих конфигурационных файлов в директории `*.d`
|
||
|
||
```bash
|
||
vim /etc/salt/master.d/master.conf
|
||
```
|
||
|
||
```bash
|
||
# The network interface to bind to
|
||
interface: 0.0.0.0
|
||
|
||
# The Request/Reply port
|
||
# Для файлового сервера, аутентификации, возврата результатов и проч.
|
||
ret_port: 4506
|
||
|
||
# The port minions bind to for commands, aka the publish port
|
||
publish_port: 4505
|
||
|
||
# Писать статистику после выполнения команд
|
||
cli_summary: true
|
||
|
||
|
||
worker_threads: 5
|
||
```
|
||
|
||
## Настройка minion
|
||
|
||
<https://docs.saltproject.io/en/latest/ref/configuration/minion.html>
|
||
|
||
```bash
|
||
cat /etc/salt/minion.d/minion.conf
|
||
```
|
||
|
||
```bash
|
||
# Адрес мастера
|
||
master: 10.1.4.1
|
||
|
||
# Уникальный идентификатор миньона
|
||
# по-умолчанию берётся hostname
|
||
id: centos-minion-1
|
||
```
|
||
|
||
## Ключи
|
||
|
||
Для аутентификации и авторизации в Salt используются пары ключей (закрытый, открытый). При включении службы миньона формируется пара ключей, открытый ключ отправляется на мастер.
|
||
|
||
У мастера есть специальная утилита для работы с ключами - `salt-key`
|
||
|
||
Некоторые примеры работы с ней:
|
||
|
||
Посмотреть все ключи
|
||
|
||
```bash
|
||
[root@alt-master ~]# salt-key -L
|
||
Accepted Keys:
|
||
Denied Keys:
|
||
Unaccepted Keys:
|
||
alt-minion-5
|
||
alt-minion-6
|
||
centos-minion-1
|
||
centos-minion-2
|
||
deb-minion-3
|
||
deb-minion-4
|
||
Rejected Keys:
|
||
```
|
||
|
||
Принять ключ конкретного миньона
|
||
|
||
```bash
|
||
[root@alt-master ~]# salt-key -l accepted
|
||
Accepted Keys:
|
||
[root@alt-master ~]# salt-key -a centos-minion-1
|
||
The following keys are going to be accepted:
|
||
Unaccepted Keys:
|
||
centos-minion-1
|
||
Proceed? [n/Y]
|
||
Key for minion centos-minion-1 accepted.
|
||
```
|
||
|
||
Принять ключи по маске идентификаторов
|
||
|
||
```bash
|
||
[root@alt-master ~]# salt-key -a 'deb*'
|
||
The following keys are going to be accepted:
|
||
Unaccepted Keys:
|
||
deb-minion-3
|
||
deb-minion-4
|
||
Proceed? [n/Y]
|
||
Key for minion deb-minion-3 accepted.
|
||
Key for minion deb-minion-4 accepted.
|
||
```
|
||
|
||
Показать только принятые ключи
|
||
|
||
```bash
|
||
salt-key -l accepted
|
||
```
|
||
|
||
Принять все предлагаемые ключи
|
||
|
||
```bash
|
||
salt-key -A
|
||
```
|
||
|
||
Удалить ключи по маске
|
||
|
||
```bash
|
||
salt-key -d 'deb*'
|
||
```
|
||
|
||
Удалить конкретный ключ
|
||
|
||
```bash
|
||
salt-key -d deb-minion-3
|
||
```
|
||
|
||
Удалить все ключи
|
||
|
||
```bash
|
||
salt-key -D
|
||
```
|
||
|
||
Для дальнейшей работы необходимо принять ключи миньонов *(уверены в том, что в текущем окружении только проверенные узлы)*
|
||
|
||
```bash
|
||
[root@alt-master ~]# salt-key -A
|
||
The following keys are going to be accepted:
|
||
Unaccepted Keys:
|
||
alt-minion-5
|
||
alt-minion-6
|
||
centos-minion-2
|
||
Proceed? [n/Y]
|
||
Key for minion alt-minion-5 accepted.
|
||
Key for minion alt-minion-6 accepted.
|
||
Key for minion centos-minion-2 accepted.
|
||
```
|
||
|
||
Таким образом должен получиться такой вывод
|
||
|
||
```bash
|
||
[root@alt-master ~]# salt-key -L
|
||
Accepted Keys:
|
||
alt-minion-5
|
||
alt-minion-6
|
||
centos-minion-1
|
||
centos-minion-2
|
||
deb-minion-3
|
||
deb-minion-4
|
||
Denied Keys:
|
||
Unaccepted Keys:
|
||
Rejected Keys:
|
||
```
|
||
|
||
## Первый тест
|
||
|
||
```bash
|
||
[root@alt-master ~]# salt '*' test.ping
|
||
centos-minion-2:
|
||
True
|
||
deb-minion-3:
|
||
True
|
||
deb-minion-4:
|
||
True
|
||
centos-minion-1:
|
||
True
|
||
alt-minion-6:
|
||
True
|
||
alt-minion-5:
|
||
True
|
||
|
||
|
||
-------------------------------------------
|
||
Summary
|
||
-------------------------------------------
|
||
# of minions targeted: 6
|
||
# of minions returned: 6
|
||
# of minions that did not return: 0
|
||
# of minions with errors: 0
|
||
-------------------------------------------
|
||
```
|
||
|
||
|
||
## Источники
|
||
|
||
<https://www.youtube.com/watch?v=6zY41M2anrY></br>
|
||
<https://gitlab.com/bergentroll-docs/saltstack-tutorial></br>
|
||
<https://docs.saltproject.io/en/latest/contents.html></br>
|
||
|