mod
parent
72773ab1b0
commit
da324df578
108
README.md
108
README.md
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
base:
|
||||||
|
'*':
|
||||||
|
- highstate.common_pkgs_installed
|
||||||
|
'N@apt':
|
||||||
|
- highstate.apt
|
||||||
|
'N@rpm':
|
||||||
|
- highstate.rpm
|
||||||
|
|
||||||
|
prod: {}
|
||||||
|
|
||||||
|
dev: {}
|
2020
stand.excalidraw
2020
stand.excalidraw
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue