mod
parent
72773ab1b0
commit
da324df578
108
README.md
108
README.md
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
# Директории, где лежат файлы состояний и пр.
|
||||
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
|
|
@ -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