Долгий Артём 2024-03-25 14:20:10 +03:00
parent 72773ab1b0
commit da324df578
8 changed files with 764 additions and 1407 deletions

108
README.md
View File

@ -7,10 +7,9 @@
- [Сравнение СУК](#сравнение-сук)
- [Аналогия с Ansible](#аналогия-с-ansible)
- [Установка Salt](#установка-salt)
- [Master на Альт сервер](#master-на-альт-сервер)
- [Master на Debian 12](#master-на-debian-12)
- [Minion на CentOS Stream 9](#minion-на-centos-stream-9)
- [Minion на Debian 12](#minion-на-debian-12)
- [Minion на Альт Сервер 10.2](#minion-на-альт-сервер-102)
- [Настройка master](#настройка-master)
- [Настройка minion](#настройка-minion)
- [Ключи](#ключи)
@ -22,6 +21,7 @@
- [Удалить ключи по маске](#удалить-ключи-по-маске)
- [Удалить конкретный ключ](#удалить-конкретный-ключ)
- [Удалить все ключи](#удалить-все-ключи)
- [Переинициализация миньона](#переинициализация-миньона)
- [Первый тест](#первый-тест)
- [Сбор данных](#сбор-данных)
- [Сбор всех данных](#сбор-всех-данных)
@ -69,13 +69,26 @@
процесс установки описан в документации <https://docs.saltproject.io/salt/install-guide/en/latest/index.html>
### Master на Альт сервер
### Master на Debian 12
сначала установил на Альт сервер, потом оказалось, что Salt не поддерживает работу с пакетным менеджером apt-rpm, который используется в Альте. Чтобы не усложнять жизнь на этапе освоения Salt, от использования в стенде узлов с ОС Альт отказался.
```bash
apt-get update && apt-get install -y salt-master salt-minion salt-api
su -
apt update
apt install curl
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 salt-master salt-minion salt-ssh salt-syndic salt-cloud salt-api
systemctl enable --now salt-master
systemctl enable --now salt-minion
systemctl enable --now salt-syndic
systemctl enable --now salt-api
```
[вверх](#краткое-руководство-по-salt-stack)
@ -87,7 +100,6 @@ sudo rpm --import https://repo.saltproject.io/salt/py3/redhat/9/x86_64/SALT-PROJ
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
```
@ -95,33 +107,19 @@ sudo systemctl enable --now salt-minion
```bash
su -
apt update
apt install curl
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
apt update && apt install -y salt-minion
systemctl enable --now salt-minion
```
[вверх](#краткое-руководство-по-salt-stack)
### 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>
@ -151,15 +149,11 @@ 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
```
[вверх](#краткое-руководство-по-salt-stack)
@ -296,6 +290,18 @@ Rejected Keys:
[вверх](#краткое-руководство-по-salt-stack)
### Переинициализация миньона
На мастере удалить ключ миньона, затем на миньоне
```bash
systemctl stop salt-minion.service
rm -rf /etc/salt/pki/
systemctl start salt-minion.service
```
далее на мастере принять обновлённый ключ
## Первый тест
```bash
@ -389,7 +395,7 @@ salt -N debian test.ping
### Составные подстановки
В составных выборках необходимо обрабатывать пробелы, т.к. не ясно где заканчивается условие, а где составное имя
**НЕ правильно** - `'G@os:CentOS Strem'`
**НЕ правильно** - `'G@os:CentOS Stream'`
**Правильно** - `'G@os:CentOS?Stream'`
**Правильно** - `'P@os:CentOS\sStream'`
**Правильно** - `G@os:CentOS*`
@ -455,7 +461,55 @@ file.delete_backup file.grep file.mknod
## Формулы
`top.sls` - файл с описанием целевого состояния миньонов. В текущем стенде он находится по пути `/srv/salt`, этот путь обозначен в настройке мастера в директиве `file_roots`
```yml
---
base:
'*':
- highstate.common_pkgs_installed
'N@apt':
- highstate.apt
'N@rpm':
- highstate.rpm
prod: {}
dev: {}
```
`highstate.common_pkgs_installed` - путь к файлу состояния. Разделитель директории указан в виде `.` точки, а не `/`.
Таким образом полный путь к файлу состояния выглядит так - `/srv/salt/highstate/common_pkgs_installed.sls`
`common_pkgs_installed.sls`
```yml
---
# Пример установки пакетов на разные миньоны
{% set vim = 'vim' %}
{% if grains['os'] == 'CentOS Stream' %}
{% set vim = 'vim-enhanced' %}
{% endif %}
common_pkgs_installed:
pkg.installed:
- pkgs:
- {{ vim }}
- git
- mc
- htop
- refresh: true
```
Для применения состояния необходимо его выполнить:
- протестировать состояние перед применением - `salt '*' state.test`
- вручную - `salt '*' state.apply`
- автоматически. В настройках миньона необходимо прописать состояние по-умолчанию или создать на мастере реактор, который будет отслеживать состояние миньонов
[вверх](#краткое-руководство-по-salt-stack)

View File

View File

@ -0,0 +1,18 @@
---
# Пример установки пакетов на разные миньоны
{% set vim = 'vim' %}
{% if grains['os'] == 'CentOS Stream' %}
{% set vim = 'vim-enhanced' %}
{% endif %}
common_pkgs_installed:
pkg.installed:
- pkgs:
- {{ vim }}
- git
- mc
- htop
- refresh: true

View File

View File

@ -11,6 +11,15 @@ publish_port: 4505
# Писать статистику после выполнения команд
cli_summary: true
# Директории, где лежат файлы состояний и пр.
file_roots:
base: # Это дефолтный saltenv
- /srv/salt/ # Это дефолтный путь
dev:
- /srv/salt-dev/
prod:
- /srv/salt-prod/
# Объединение узлов в группы
# Пробелы в выборках нужно обрабатывать
# НЕ правильно - 'G@os:CentOS Strem'
@ -22,6 +31,3 @@ nodegroups:
debian: 'G@os:Debian'
apt: 'deb-*'
rpm: 'centos-*'
worker_threads: 5

View File

@ -0,0 +1,13 @@
---
base:
'*':
- highstate.common_pkgs_installed
'N@apt':
- highstate.apt
'N@rpm':
- highstate.rpm
prod: {}
dev: {}

File diff suppressed because it is too large Load Diff

BIN
stand.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 284 KiB

After

Width:  |  Height:  |  Size: 205 KiB