Долгий Артём 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) - [Аналогия с Ansible](#аналогия-с-ansible)
- [Установка Salt](#установка-salt) - [Установка Salt](#установка-salt)
- [Master на Альт сервер](#master-на-альт-сервер) - [Master на Debian 12](#master-на-debian-12)
- [Minion на CentOS Stream 9](#minion-на-centos-stream-9) - [Minion на CentOS Stream 9](#minion-на-centos-stream-9)
- [Minion на Debian 12](#minion-на-debian-12) - [Minion на Debian 12](#minion-на-debian-12)
- [Minion на Альт Сервер 10.2](#minion-на-альт-сервер-102)
- [Настройка master](#настройка-master) - [Настройка master](#настройка-master)
- [Настройка minion](#настройка-minion) - [Настройка minion](#настройка-minion)
- [Ключи](#ключи) - [Ключи](#ключи)
@ -22,6 +21,7 @@
- [Удалить ключи по маске](#удалить-ключи-по-маске) - [Удалить ключи по маске](#удалить-ключи-по-маске)
- [Удалить конкретный ключ](#удалить-конкретный-ключ) - [Удалить конкретный ключ](#удалить-конкретный-ключ)
- [Удалить все ключи](#удалить-все-ключи) - [Удалить все ключи](#удалить-все-ключи)
- [Переинициализация миньона](#переинициализация-миньона)
- [Первый тест](#первый-тест) - [Первый тест](#первый-тест)
- [Сбор данных](#сбор-данных) - [Сбор данных](#сбор-данных)
- [Сбор всех данных](#сбор-всех-данных) - [Сбор всех данных](#сбор-всех-данных)
@ -69,13 +69,26 @@
процесс установки описан в документации <https://docs.saltproject.io/salt/install-guide/en/latest/index.html> процесс установки описан в документации <https://docs.saltproject.io/salt/install-guide/en/latest/index.html>
### Master на Альт сервер ### Master на Debian 12
сначала установил на Альт сервер, потом оказалось, что Salt не поддерживает работу с пакетным менеджером apt-rpm, который используется в Альте. Чтобы не усложнять жизнь на этапе освоения Salt, от использования в стенде узлов с ОС Альт отказался.
```bash ```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-master
systemctl enable --now salt-minion systemctl enable --now salt-minion
systemctl enable --now salt-syndic
systemctl enable --now salt-api
``` ```
[вверх](#краткое-руководство-по-salt-stack) [вверх](#краткое-руководство-по-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 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 dnf install -y salt-minion
sudo systemctl enable --now salt-minion sudo systemctl enable --now salt-minion
``` ```
@ -95,33 +107,19 @@ sudo systemctl enable --now salt-minion
```bash ```bash
su - su -
apt update
apt install curl
mkdir /etc/apt/keyrings 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 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 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 update && apt install -y salt-minion
apt install -y salt-minion
systemctl enable --now salt-minion systemctl enable --now salt-minion
``` ```
[вверх](#краткое-руководство-по-salt-stack) [вверх](#краткое-руководство-по-salt-stack)
### Minion на Альт Сервер 10.2
```bash
su -
apt-get update
apt-get install -y salt-minion
systemctl enable --now salt-minion
```
## Настройка master ## Настройка master
Описание возможных директив конфигурационного файла приводится в файле `/etc/salt/master` или в документации <https://docs.saltproject.io/en/latest/ref/configuration/master.html> Описание возможных директив конфигурационного файла приводится в файле `/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 Strem'
# Правильно - 'G@os:CentOS?Stream' или 'P@os:CentOS\sStream' или 'G@os:CentOS*' # Правильно - 'G@os:CentOS?Stream' или 'P@os:CentOS\sStream' или 'G@os:CentOS*'
nodegroups: nodegroups:
alt: 'G@os:ALT'
centos-stream: 'G@os:CentOS?Stream' centos-stream: 'G@os:CentOS?Stream'
centos: 'P@os:CentOS\sStream' centos: 'P@os:CentOS\sStream'
debian: 'G@os:Debian' debian: 'G@os:Debian'
apt: 'deb-*' apt: 'deb-*'
rpm: 'centos-*' rpm: 'centos-*'
worker_threads: 5
``` ```
[вверх](#краткое-руководство-по-salt-stack) [вверх](#краткое-руководство-по-salt-stack)
@ -296,6 +290,18 @@ Rejected Keys:
[вверх](#краткое-руководство-по-salt-stack) [вверх](#краткое-руководство-по-salt-stack)
### Переинициализация миньона
На мастере удалить ключ миньона, затем на миньоне
```bash
systemctl stop salt-minion.service
rm -rf /etc/salt/pki/
systemctl start salt-minion.service
```
далее на мастере принять обновлённый ключ
## Первый тест ## Первый тест
```bash ```bash
@ -389,7 +395,7 @@ salt -N debian test.ping
### Составные подстановки ### Составные подстановки
В составных выборках необходимо обрабатывать пробелы, т.к. не ясно где заканчивается условие, а где составное имя В составных выборках необходимо обрабатывать пробелы, т.к. не ясно где заканчивается условие, а где составное имя
**НЕ правильно** - `'G@os:CentOS Strem'` **НЕ правильно** - `'G@os:CentOS Stream'`
**Правильно** - `'G@os:CentOS?Stream'` **Правильно** - `'G@os:CentOS?Stream'`
**Правильно** - `'P@os:CentOS\sStream'` **Правильно** - `'P@os:CentOS\sStream'`
**Правильно** - `G@os:CentOS*` **Правильно** - `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) [вверх](#краткое-руководство-по-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 cli_summary: true
# Директории, где лежат файлы состояний и пр.
file_roots:
base: # Это дефолтный saltenv
- /srv/salt/ # Это дефолтный путь
dev:
- /srv/salt-dev/
prod:
- /srv/salt-prod/
# Объединение узлов в группы # Объединение узлов в группы
# Пробелы в выборках нужно обрабатывать # Пробелы в выборках нужно обрабатывать
# НЕ правильно - 'G@os:CentOS Strem' # НЕ правильно - 'G@os:CentOS Strem'
@ -22,6 +31,3 @@ nodegroups:
debian: 'G@os:Debian' debian: 'G@os:Debian'
apt: 'deb-*' apt: 'deb-*'
rpm: 'centos-*' 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