Использование SaltStack

Содержание

Получение справки:

Общий пример:

salt 'client' sys.doc cmd.run  ## с мастера на миньоне
salt-call sys.doc cmd.run  ## непосредственно на миньоне

Главное не забывать про возможности справки… очень помогает в работе:

salt minion sys.list_modules  ## список доступных на миньоне модулей
salt minion sys.list_functions grains  ## список функций модуля
## список доступного в справке. !!познавательно!! :
salt-call sys.list_functions sys

Дебажим

Смотрим состояния:

salt minion state.show_top  #что прописано в топе (с мастера)
sudo salt-call state.show_states #состояния после всех include (с миньона)

Проверить как рендерится строка (jinja|yaml) на миньоне:

sudo salt-call slsutil.renderer string='{% if "nginx" in grains.roles%} {{saltenv}}{% endif%}'

Проверить конфиг Salt

salt-call -l debug state.show_top #Выполняется на миньоне

Экстремальный способ: поставить опцию -l all и искупаться в логе. С мастера вывод инфы меньше.

# выполнять из проверочной папки... грубо, но как вариант
find . -name "*.sls" -not -name top.sls | sed "s|\.\/(.*)\.sls|\1|; s|\/|.|g; s|\.init||g" | xargs -t -n1 salt-call --local --file-root=$(pwd) state.test mock=true --state-verbose=false

ADD USER

add user linux

salt -C 'Client-Srv[123]' user.add useradmin groups=sudo shell=/bin/bash fullname='User Admin' createhome=True 
mkpasswd -m sha-512

Выставить пользователю пасс по хешу (Linux)

salt 'Client-Srv*' shadow.set_password useradmin 'hash' 

Включить обязательную смену пароля

salt 'Client-Srv*' cmd.run 'chage -d 0 useradmin' 
salt 'Client-Srv*' shadow.set_date useradmin 0 

# no expire (Только крайние случаи, согласованные с ИБ)

salt 'Client-Srv*' cmd.run 'chage -E -1 useradmin' 

# add user Windows

sudo salt -C 'G@os:Windows and Client-Srv*' user.add useradmin 1qaz@WSX fullname="User Admin" groups="Администраторы" 
(Сразу лезем на сервак и меняем засвеченный пасс. Ждем "письмо счастья" о засветке пасса в IDS)

OTHER EXAMPLES

# проверить версию Ubuntu

salt -C 'Client* and G@os:Ubuntu' cmd.run 'cat /etc/os-release|grep PRETT' 

# получить справку с миньона

sudo salt -C 'Client-Srv[123]' sys.list_modules #о доступных модулях sudo salt -C 'Client-Srv[123]' sys.list_functions user #о списке команд модуля sudo salt -C 'Client-Srv[123]' sys.doc user.add #о синтаксисе команды 

# проверить кто вошел на линуховые сервера

sudo salt -C 'G@os:Ubuntu and Client-Srv*' cmd.run 'w' 

# проверить кто заведен на линуховые сервера с возможностью входа (прописан bash шеллом)

sudo salt -C 'G@os:Ubuntu and Client-Srv*' cmd.run 'egrep "bash" /etc/passwd'

# проверить менял ли пароли User1 на линуховых серверах

sudo salt -C 'G@os:Ubuntu and Client-Srv*' cmd.run 'passwd -Sa' | egrep "Client-|user1" 

# проверить менял ли пароли user1 на виндовых серверах

sudo salt -C 'G@os:Windows and Client-Srv*' user.info User1

# проверить состояние учетки User1 на линуксовых серверах (не залочена ли по количеству неверных входов)

salt -C 'Client-Srv*' cmd.run 'pam_tally2 --user=user1' 

# проверить куда подключены VPN юзеры (10.255.255.0/24 сеть VPN)

salt -C 'Client-Srv*' cmd.run 'netstat -an'|egrep -i "cli-|10\.255\.255\." (символом "\" маскируем точку - иначе это "любой символ") 

# применение более сложных выборок из групп серверов

salt -C 'G@os:Ubuntu and ( Client-Srv[6-9]* or Client-Srv[1-2]* )' cmd.run 'systemctl restart rabbitmq-server&&systemctl status rabbitmq-server'
(Обращаем внимание об отделении скобок пробелами)

# остановка и запуск службы auditbeat на Windows-based серверах

salt -C 'G@os:Windows' service.stop auditbeat --timeout=30
salt -C 'G@os:Windows' service.disable auditbeat --timeout=30
salt -C 'G@os:Windows' service.enable auditbeat --timeout=30
salt -C 'G@os:Windows' service.start auditbeat --timeout=30