Go to file
Долгий Артём cc6b9eb70e mod 2024-03-20 17:53:24 +03:00
README.md mod 2024-03-20 17:53:24 +03:00
stand.excalidraw mod 2024-03-15 15:54:38 +03:00
stand.png mod 2024-03-15 15:58:13 +03:00

README.md

Краткое руководство по Salt Stack



В качестве тестового стенда используется виртуальная лаборатория

stand

Установка Salt

процесс установки описан в документации https://docs.saltproject.io/salt/install-guide/en/latest/index.html

Master на Альт сервер

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

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

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

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

vim /etc/salt/master.d/master.conf
# 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

# Объединение узлов в группы
# Пробелы в выборках нужно обрабатывать
# НЕ правильно - 'G@os:CentOS Strem'
# Правильно - 'G@os:CentOS?Stream' или 'P@os:CentOS\sStream' или 'G@os:CentOS*'
nodegroups:
  alt: 'G@os:ALT'
  centos-stream: 'G@os:CentOS?Stream'
  centos: 'P@os:CentOS\sStream'
  debian: 'G@os:Debian'
  apt: 'deb-*'
  rpm: 'centos-*'


worker_threads: 5

Настройка minion

https://docs.saltproject.io/en/latest/ref/configuration/minion.html

cat /etc/salt/minion.d/minion.conf
# Адрес мастера
master: 10.1.4.1

# Уникальный идентификатор миньона
# по-умолчанию берётся hostname
id: centos-minion-1

Ключи

Для аутентификации и авторизации в Salt используются пары ключей (закрытый, открытый). При включении службы миньона формируется пара ключей, открытый ключ отправляется на мастер.

У мастера есть специальная утилита для работы с ключами - salt-key

Некоторые примеры работы с ней:

Посмотреть все ключи

[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:

Принять ключ конкретного миньона

[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.

Принять ключи по маске идентификаторов

[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.

Показать только принятые ключи

salt-key -l accepted

Принять все предлагаемые ключи

salt-key -A

Удалить ключи по маске

salt-key -d 'deb*'

Удалить конкретный ключ

salt-key -d deb-minion-3

Удалить все ключи

salt-key -D

Для дальнейшей работы необходимо принять ключи миньонов (уверены в том, что в текущем окружении только проверенные узлы)

[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.

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

[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:

Первый тест

[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
-------------------------------------------

Сбор данных

grains - зёрна, переменные, которые получает мастер с миньона

[root@alt-master ~]# salt 'alt-minion-6' grains.
grains.append     grains.delval     grains.fetch      grains.get        grains.item       grains.ls         grains.set        grains.setvals    
grains.delkey     grains.equals     grains.filter_by  grains.has_value  grains.items      grains.remove     grains.setval

двойной Tab покажет возможные варианты команды

Сбор всех данных

salt 'alt-minion-6' grains.items

Получение конкретных значений

salt 'alt-minion-6' grains.item ipv4
salt 'alt-minion-6' grains.item os
salt 'alt-minion-6' grains.item cpuarch

Указание конкретных миньонов для запуска

По маске имён

salt 'deb-*' test.ping

* - и прочие подстановочные символы необходимо оборачивать кавычками, иначе оболочка их будет интерпретировать по-своему - Glob-подстановки

По зёрнам (grains) в качестве фильтров

Пробелы в выборках нужно обрабатывать
НЕ правильно - 'G@os:CentOS Strem'
Правильно - 'G@os:CentOS?Stream'
Правильно - 'P@os:CentOS\sStream' Правильно - G@os:CentOS*

salt -G 'os:ALT' test.ping
salt -G 'G@os:CentOS?Stream' test.ping

По группам узлов

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

salt -N debian test.ping

Составные подстановки

deb_ip=$(salt 'deb-minion-3' network.ipaddrs --out=newline_values_only)
salt -C "( G@os:CentOS* and alt* ) or S@${deb_ip}" test.ping

Источники

https://www.youtube.com/watch?v=6zY41M2anrY
https://gitlab.com/bergentroll-docs/saltstack-tutorial
https://docs.saltproject.io/en/latest/contents.html