Долгий Артём 2024-03-26 14:14:46 +03:00
parent 377f30f107
commit 38c1c95520
1 changed files with 159 additions and 0 deletions

159
README.md
View File

@ -10,6 +10,7 @@
- [Master на Debian 12](#master-на-debian-12)
- [Minion на CentOS Stream 9](#minion-на-centos-stream-9)
- [Minion на Debian 12](#minion-на-debian-12)
- [Автодополнение команд](#автодополнение-команд)
- [Настройка master](#настройка-master)
- [Настройка minion](#настройка-minion)
- [Ключи](#ключи)
@ -34,6 +35,9 @@
- [Модули исполнения](#модули-исполнения)
- [Несколько полезных функций](#несколько-полезных-функций)
- [Формулы](#формулы)
- [Модули состояний](#модули-состояний)
- [Нельзя использовать в одном состоянии один модуль несколько раз!](#нельзя-использовать-в-одном-состоянии-один-модуль-несколько-раз)
- [Порядок исполнения](#порядок-исполнения)
- [Источники](#источники)
***
@ -120,6 +124,33 @@ systemctl enable --now salt-minion
[вверх](#краткое-руководство-по-salt-stack)
## Автодополнение команд
В Альт автодополнение работает из коробки, а вот в Debian его необходимо дополнительно настраивать.
В первую очередь необходимо убедиться в том, что установлен пакет `bash-completion`
```bash
root@deb-master:~# apt-cache policy bash-completion
bash-completion:
Установлен: 1:2.11-6
Кандидат: 1:2.11-6
Таблица версий:
*** 1:2.11-6 500
500 http://deb.debian.org/debian bookworm/main amd64 Packages
100 /var/lib/dpkg/status
```
если не установлен - установить. Это добавит автодополнение для встроенных команд bash, для того, чтобы заработало автодополнение в salt, дополнительно необходимо добавить профиль автодополнения
```bash
wget https://raw.githubusercontent.com/saltstack/salt/develop/pkg/salt.bash
cp salt.bash /etc/bash_completion.d/
source /etc/bash_completion.d/salt.bash
```
Теперь по двойному Tab в командах salt на мастере должны отображаться возможные варианты дополнения команд.
## Настройка master
Описание возможных директив конфигурационного файла приводится в файле `/etc/salt/master` или в документации <https://docs.saltproject.io/en/latest/ref/configuration/master.html>
@ -524,6 +555,134 @@ common_pkgs_installed:
[вверх](#краткое-руководство-по-salt-stack)
## Модули состояний
Модули состояний похожи на модули исполнения с той разницей, что модули исполнения используются для текущего выполнения в командной строке, а модули состояний описываются в формулах, которые должны применяться на миньонах. Чаще функционал модулей исполнения и модулей состояний идентичен, но в некоторых модулях могут быть отличия.
```yml
---
# Пример системного состояния для RPM-дистрибутивов.
# Обновляет ядро Linux и корректирует конфигурацию загрузчика.
kernel updated:
pkg.uptodate:
- pkgs:
- kernel
- refresh: true
file.comment:
- name: '/etc/default/grub'
- regex: '^GRUB_DEFAULT|^GRUB_DISABLE_SUBMENU'
cmd.run:
- name: 'grub2-mkconfig -o /boot/grub2/grub.cfg'
module.run:
- name: system.reboot
```
В примере указаны модули состояний `pkg`, `file`, `cmd` каждый вызывается с конкретной функцией - `pkg.uptodate`, `file.comment`, `cmd.run`
Модуль `module.run` - позволяет в файле описания состояний вызвать модуль исполнения. Так в примере с помощью этого модуля вызван модуль исполнения `system.reboot`
### Нельзя использовать в одном состоянии один модуль несколько раз!
Например такое состояние завершится ошибкой потому что модуль `pkg` используется дважды
```yml
---
common_pkgs_installed:
pkg.installed:
- pkgs:
- git
- mc
- refresh: true
pkg.latest:
- name: mc
```
```bash
deb-master:
Data failed to compile:
----------
ID 'common_pkgs_installed' in SLS 'highstate.common_pkgs_installed' contains multiple state declarations of the same type
```
## Порядок исполнения
- по порядку описания
```yml
---
state1:
test.succeed_with_changes
state2:
test.succeed_with_changes
state3:
test.succeed_with_changes
state4:
test.succeed_with_changes
```
- по флагу `ordered`
```yml
---
state1:
test.succeed_with_changes:
- order: 3
state2:
test.succeed_with_changes:
- order: 2
state3:
test.succeed_with_changes:
- order: 1
state4:
test.succeed_with_changes:
- order: 4
```
Выполнится в порядке order - `order: 1`, `order: 2`, `order: 3`, `order: 4`
- по реквизитам
```yml
---
state1:
test.succeed_with_changes: []
state2:
test.succeed_with_changes:
- require:
- state1
state3:
test.succeed_with_changes:
- onchanges: # А так же watch, listen
- state1
- test: state2
state4:
test.succeed_with_changes:
- prereq:
- state1
unhappy_state:
test.succeed_with_changes:
- onfail:
- state*
```
## Источники
<https://www.youtube.com/watch?v=6zY41M2anrY></br>