Содержание
Получение справки:
Общий пример:
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