🖥️salt
➡️This is a command-line reference manual for commands and command combinations that you don’t use often enough to remember it. This cheatsheet explains the salt command with important options and switches using examples.
7 minute read
▁ ▂ ▃ ▄ ꧁ 🔴☠ COMMANDLINE-KUNGFU WITH CHEATSHEETS ☠🔴꧂▅ ▃ ▂ ▁
# ███████╗ █████╗ ██╗ ████████╗
# ██╔════╝██╔══██╗██║ ╚══██╔══╝
# ███████╗███████║██║ ██║
# ╚════██║██╔══██║██║ ██║
# ███████║██║ ██║███████╗██║
# ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝
# Saltstack ist eine Softwareverwaltung für Linux und Windows, mit der eine große Anzahl von Systemen verwaltet werden kann
#------------#
# Todo Bei einem neuen Minion:
#-------------------------------#
1. apt install salt-minion
2. vi /etc/hosts muss die DMZ Adresse drin sein wie z.B.
# 10.254.253.47 salt
3. vi /etc/salt/minion_id >
# FQDN wie z.B. proxy.lxu.io
4. Am Salt Master schauen ob es neue Minions gibt
salt-key -L
5. DMZ
# Destination dmz.lxu.io (dmz Adresse) <-> DMZ = source
# Ports TCP 4505 und TCP 4506 müssen eingehen an der Inside Firewall offen sein
# DMZ muss in /etc/hosts eintrag rein:
# 10.254.254.10 salt
6. in der /etc/salt/minion_id
#muss der hostname in FQDN rein
### Installation
# -------------
# cname salt auf master einrichten -> salt.lxu.io
# Master
apt-get install salt-master
# Miniom
apt-get install salt-minion
### Administration (remote execution)
# ----------------------------------
# auf der Kommandozeile des Masters als root:
## Minions hinzufügen:
# -> zeigt accepted und unaccepted Clients an
salt-key -L
# -> fügt accepted Clients hinzu
salt-key -A
## Verwaltung:
salt-run manage.status
salt '*' test.ping
salt '*' cmr.run 'ls -l /etc/hosts'
salt '*' cmd.run 'lsb_release -d'
salt '*' network.interfaces
salt '*' status.loadavg
salt '*' disk.usage
salt '*' status.uptime
# Alle verfügbaren Module anschauen:
salt 'SERVER*' sys.doc | grep -E "^\w"
# Nur Befehle für pkg-Modul anschauen
salt 'SERVER*' sys.doc pkg
# Paket Version anschauen
salt 'SERVER.lxu.io' pkg.version vim
# Paket installieren
sealt 'SERVER.lxu.io' pkg.install vim
# Paket löschen
sealt 'LINUX-SERVER.lxu.io' pkg.purge vim
# Pakete updaten
salt 'SERVER*' pkg.list_upgrades
salt '*' pkg.upgrade
salt 'LINUX-SERVER.lxu.io' pkg.upgrade dryrun=True
# Achtung, nicht alle Maschinen gleichzeitig booten
salt 'LINUX-SERVER.lxu.io' system.reboot
# Password generieren
salt 'minion_id' shadow.gen_password 'Plaintext_Password'
# Passwort ändern
salt 'minion_id' shadow.set_password root 'Password_Hash'
### States (system states)
# ---------------------
# zuerst in /etc/salt/master fileserver konfigurieren
file_roots:
base:
- /srv/salt
# dann /etc/init.d/salt-master restart
/srv/salt/top.sls Kommandozentrale
/srv/salt/vim Pakte
# einen State ausführen:
salt -v 'LINUX-SERVER.lxu.io' state.sls vim
# state.apply = state.highstate oder state.sls
salt 'LINUX-SERVER' state.apply vim
### Pillars (system variables)
# --------------------------
### Garin (Oberflächenbild)
# ------------------------
# Grains auflisten
salt 'LINUX-SERVER.lxu.io' grains.items
# Grain addressieren
salt -G 'virtual:VMware' test.ping
### Addressieren von Minions
# -------------------------
## 1. Liste
# in top.sls
'LINUX-SERVER.lxu.io,proxy.lxu.io'
- match: list
# addressieren
salt -L
## 2. Nodegroups
# konfigurieren der Gruppe in /etc/salt/master
# in top.sls
proxy:
- match: nodegroup
# addressieren
salt -N ...
salt -N 'dnsdmz' state.sls bind
salt -N 'mailrelay' state.highstate postfixmailrelay
# oder
salt -N 'mailrelay' state.sls postfixmailrelay
# dazu muss postfixmailrelay nicht in top eingetragen sein
###########################################
# Verzeichnis auf lxu.io/srv/salt
#####################################
# alle hosts die mit dns beginnen werden angepingt
salt 'dns*' test.ping
# alle hosts die mit dns beginnen wird folgendes ausgeführt:
salt 'dns*' state.sls agentsdns
############ /srv/salt/agentsdns.sls ##########
# agent auf den sdns-Server installieren
# check-mk-agent:
# pkg.purged: []
# cmd.run:
# - name: rm -f /root/check-mk-agent*deb
# checkmkagent:
# cmd.run:
# - name: dpkg -i /root/check-mk-agent_1.2.8p18_all.deb
# - require:
# - file: /root/check-mk-agent_1.2.8p18_all.deb
# /root/check-mk-agent_1.2.8p18_all.deb:
# file.managed:
# - source: salt://deploy/checkmk/check-mk-agent_1.2.8p18_all.deb
# register:
# cmd.run:
# - name: cmk-update-agent register -vvv --secret SECRETPASS
# Packet Upgrades verfügber?
salt 'unix.lxu.io' pkg.list_upgrades
# Packete Upgraden
salt 'unix.lxu.io' pkg.upgrade
# dhcpdconfsdns.sls ausfürhen (alle configs auf allen dhcp server austauschen)
salt 'dhcp.lxu.*' state.sls dhcpdconfsdns
# config verzeichnis [email protected]:/srv/salt/deploy/dhcpdsdns
history | awk '{print $4,$5,$6,$7,$8,$9,$10}' | grep -i salt
cd /srv/salt/deploy/
salt-key -L
salt-key -L | grep voip
salt-key -L | grep prx
salt-key -A
salt-key -L | wc -l
salt 'dns.lxu.io' state.highstate
salt-cmd proxy.lxu.io test.ping
salt apache.lxu.io test.ping
# drüberkopieren
salt-cp dhcp.lxu.io ./sysctl.conf /etc/
salt-cp proxy.lxu.io ./sysctl.conf /etc/
salt nginx.lxu.io cmd.run 'sysctl -p'
salt nbinx.lxu.io cmd.run 'sysctl -p'
salt proxy.lxu.io cmd.run 'sysctl -p'
salt-key -d bind9.lxu.io
salt 'saltstack.lxu.io' state.highstate
# Anpingen eines Servers
salt unix-srv50.lxu.io test.ping
salt unix-srv360.lxu.io test.ping
salt '*' cmd.run 'lsb_release -d'
salt 'proxy*' pkg.update
salt 'server1.lxu.io' pkg.upgrade
salt '*.lxu.io' pkg.install linux-image-amd64
salt 'ssh.lxu.io' state.sls vim
salt '*.lxu.io' pkg.autoremove purge=True
salt 'dhcp.lxu.io' system.reboot
salt 'squidproxy*' cmd.run 'tail /var/log/squid/access.log'
salt -N 'mailrelay' state.sls postfixmailrelay
# Eine Nodegroup wird unter /etc/salt/master erstellt - z.b. nodegroup unix-srv:
unix-srv: '[email protected],unix-srv379.lxu.io,unix-srv380.lxu.io,unix-srv381.lxu.io,unix-srv383.lxu.io,unix-srv384.lxu.io,unix-srv389.lxu.io,unix-srv390.lxu.io,unix-srv391.lxu.io,unix-srv392.lxu.io,unix-srv393.lxu.io,unix-srv394.lxu.io,unix-srv770.lxu.io,unix-srv774.lxu.io,unix-srv777.lxu.io,unix-srv260.lxu.io,unix-srv260.lxu.io'
salt -N 'unix-srv' cmd.run 'lsb_release -d'
salt -N 'unix-srv' cmd.run 'tail -n 10 /var/log/daemon.log'
salt -N 'unix-srv' cmd.run 'tail -n 10 /var/log/daemon.log'
#-----------------------------------------------------------------------///
# Port 4506 Saltstack
#-----------------------------------------------------------------------///
# Beispiel: Benutzer anlegen
salt * user.add thorsten
# Benutzer auf allen Systemen anlegen
salt '*' ssh.set_auth_key admin AAAAB3NzaC2y…p8cxw==enc='rsa' comment='[email protected]'
# Einen öffentlichen SSH-Schlüssel hinterlegen
salt '*' user.chshell admin /bin/bash
salt * cmd.run "lsb_release -d"
salt * pkg.upgrade
# Beispiel: Benutzer anlegen
salt * user.add thorsten
# Benutzer auf allen Systemen anlegen
salt '*' ssh.set_auth_key admin AAAAB3NzaC2y…p8cxw==enc='rsa' comment='[email protected]'
# Einen öffentlichen SSH-Schlüssel hinterlegen
salt '*' user.chshell admin /bin/bash
# Minions adressieren (Grain = Oberflächenbild)
salt -G "os_family:RedHat" test.ping
# unter der Oberfläche
salt minion1.lxu.io grains.items
# States definieren in /etc/salt/master
file_roots:
base:
- /srv/salt
# Die Kommandobrücke: top.sls
/srv/salt/top.sls
# Benutzer verwalten
/srv/salt/create_user.sls
### Push & Pull
# -------------
# Pull - Minions holen sich alle States ab: root@minion2:~
salt-call state.highstate
# Push - Master schickt alle Sates (top.sls): root@master:~
salt minion1.lxu.io state.highstate
# Master schickt einen State: root@master:~#
salt minion1.lxu.io state.sls create_user
# dynamische Dateien mit Jinja
#-----------------------------------------------------------------------///
# Upgade Buster
/etc/apparmor.d/local/usr.sbin.named
# alle die mit linux- anfangen - rausfinden wie die wirktlich heißen
salt 'linux-*' cmd.run 'hostname'
# System testpingen
salt 'linux-sftp.lxu.io' test.ping
# System upgraden
salt 'linux-sftp.lxu.io' pkg.upgrade dist_upgrade=yes
# Alten system aufräumen
salt 'linux-sftp.lxu.io' pkg.autoremove
# System upgraden
salt 'linux-sftp.lxu.io' pkg.upgrade dist_upgrade=yes
# reboot
salt 'linux-sftp.lxu.io' system.reboot
# testen ob 10 läuft
salt 'linux-sftp.lxu.io' '*' cmd.run 'lsb_release -d'
# Shell Variable setzen
[email protected]:/srv/salt# MyServer=lxu.io
[email protected]:/srv/salt# echo $MyServer
#-----------------------------------------------------------------#
salt '$MyServer' pkg.upgrade dist_upgrade=yes
salt '$MyServer' state.sls upgrade
salt '$MyServer' pkg.upgrade dist_upgrade=yes
# -> Minion did not return. [Not connected]
# dauert weile -> 5min bis minion wieder da ist
salt '$MyServer' pkg.autoremove
salt '$MyServer' system.reboot
salt '$MyServer' test.ping
[email protected]:/srv/salt# MyServer=linux.lxu.io
[email protected]:/srv/salt# echo $MyServer
#-----------------------------------------------------------------#
salt -N '2upgrade' pkg.upgrade dist_upgrade=yes
salt -N '2upgrade' state.sls upgrade
salt -N '2upgrade' pkg.upgrade dist_upgrade=yes
# -> Minion did not return. [Not connected]
# dauert weile -> 5min bis minion wieder da ist
salt -N '2upgrade' pkg.autoremove
salt -N '2upgrade' system.reboot
salt -N '2upgrade' test.ping
# Tests
salt -N '2upgrade' cmd.run 'service isc-dhcp-server status'
salt -N '2upgrade' cmd.run 'service bind9 status'
salt -N '2upgrade' cmd.run 'tail -n 50 /var/log/daemon.log'
salt -N '2upgrade' cmd.run 'dig @localhost linux.lxu.io'
salt -N '2upgrade' cmd.run 'dig @localhost google.com'
## recive Files from salt-minion
# gehen ins verzeichnis: -> /var/cache/salt/master/minions/linux.lxu.io/files/root
# -> salt linux.lxu.io cp.push /root/testdatei
salt linux.lxu.io cp.push /root/testdatei
# copiert von remote nach /var/cache/salt/master/minions/mx.lxu.io/files/*
salt -N mxn cp.push_dir /etc/postfix/
salt linux.lxu.io cp.push /etc/dhcp/
salt mx.lxu.io cp.push_dir /etc/postfix/
salt mx.lxu.io cp.push_dir /etc/rspamd/
salt mx.lxu.io cp.push_dir /var/lib/clamav/
# von . local das script nach /usr/local/bin zu den minions kopieren
salt-cp dhcp.lxu.io 'dhcplease-monitor.sh' '/usr/local/bin'
# auf minions remote dateirecht des scripts ändern auf execuable
salt dhcp.lxu.io cmd.run 'chmod +x /usr/local/bin/dhcplease-monitor.sh'
# Testping auf dhcp.lxu.io
salt 'dhcp.lxu.io*' test.ping
# Copy des scripts nach /usr/local/bin
salt-cp 'dhcp.lxu.io*' 'dhcplease-monitor.sh' '/usr/local/bin'
# chmod eines scripts über
salt 'dhcp.lxu.io*' cmd.run 'chmod u+x /usr/local/bin/dhcplease-monitor.sh'
#==============================##==============================#
# CMD SALT #
#==============================##==============================#
Cheatsheets are an excellent complement to other information sources like Linux man-pages, Linux help, or How-To’s and tutorials, as they provide compact and easily accessible information. While man-pages and detailed tutorials often contain comprehensive explanations and extensive guides, cheatsheets summarize the most important options forthe command salt in a clear format. This allows users to quickly access the needed information for salt without having to sift through lengthy texts. Especially in stressful situations or for recurring tasks, cheatsheets for salt are a valuable resource to work efficiently and purposefully.
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
█║▌│║█║▌★ KALI ★ PARROT ★ DEBIAN 🔴 PENTESTING ★ HACKING ★ █║▌│║█║▌
██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗███████╗██████╗
████████╗██╔══██╗██╔═══██╗╚██╗██╔╝██╔════╝██╔══██╗
╚██╔═██╔╝██║ ██║██║ ██║ ╚███╔╝ █████╗ ██║ ██║
████████╗██║ ██║██║ ██║ ██╔██╗ ██╔══╝ ██║ ██║
╚██╔═██╔╝██████╔╝╚██████╔╝██╔╝ ██╗███████╗██████╔╝
╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═════╝
█║▌│║█║▌ WITH COMMANDLINE-KUNGFU POWER █║▌│║█║▌
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.