Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:saltstack

SaltStack

ist eine Open-Source-Software zur Automatisierung der Konfiguration von Serversystemen. Mit SaltStack lassen sich beispielsweise Software-Pakete installieren und konfigurieren sowie beliebige Konfigurationsbefehle von einem zentralen Rechner aus auf einer Vielzahl verwalteter Server ausführen.

Beschreibung Externer Link
Homepage https://www.saltstack.com/
Dokumentation https://docs.saltstack.com/
Installation https://repo.saltstack.com/

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root zu werden, geben Sie bitte nachfolgenden Befehl ein:

$ su -
Password: 

Herunterladen

Zur Installation von SaltStack kann ein shell-Skript, das Salt Bootstrap Skript, verwendet werden, welches es ermöglicht, den Salt Minion oder Master auf einer Vielzahl von Systemversionen und Versionen zu installieren.

Das Salt Bootstrap Skript ist ein shell-Skript, das als

  • bootstrap-salt.sh

bekannt ist. Es durchläuft eine Reihe von Prüfungen, um den Typ und die Version des Betriebssystems zu ermitteln. Anschließend installiert es die Salt-Binärdateien mit den entsprechenden Methoden.

Das Salt Bootstrap Skript installiert die minimale Anzahl von Paketen, die für die Ausführung des SaltStack erforderlich sind. Das bedeutet, dass, falls das Salt Bootstrap Skript zur Installation über eine Paket-Installation ausgeführt wird, Git nicht installiert wird. Die Installation der minimalen Anzahl von Paketen hilft sicherzustellen, dass das Salt Bootstrap Skript so klein wie möglich bleibt, vorausgesetzt, es werden alle anderen erforderlichen Pakete ebenfalls installiert, nachdem die Salt Binärdateien auf dem System vorhanden sind.

Das Salt Bootstrap Skript wird in einem separaten Repository von SaltStack verwaltet, komplett mit eigenen Problemen, Erweiterungs-Anfragen, Beitragsrichtlinien, Release-Protokoll, uvm.

Nachfolgender Befehl lädt das aktuellste Salt Bootstrap Skript von den SaltStack-Servern herunter und speichert dieses im Verzeichnis /tmp:

# curl -L https://bootstrap.saltstack.com -o /tmp/install_salt.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   264  100   264    0     0    946      0 --:--:-- --:--:-- --:--:--   956
100  260k  100  260k    0     0   539k      0 --:--:-- --:--:-- --:--:--  539k

Nachfolgender Befehl überprüft ob das Herunterladen erfolgreich durchgeführt wurde:

# ls -l /tmp | grep install_salt.sh
-rw-r--r-- 1 root  root  266421 May 28 20:40 install_salt.sh

Installation

Nachfolgend soll die Installation eines SaltStack

  • salt-master (Server in der Installation)
  • salt-minion (Client in der Installation)

durchgeführt werden.

Optional können nachfolgende Pakete ebenfalls installiert werden:

  • salt-ssh - kann entfernten Ausführung auch ohne die Verwendung eines Agenten durchführen.
  • salt-syndic - master-Daemon, der Anweisungen von einem übergeordneten Master empfangen kann. Kommt bei einer mehrstufige Organisation der SaltStack-Infrastruktur zum Einsatz.
  • salt-cloud - stellt neue Cloud-VMs bereit.

:!: HINWEIS - Die Installation des MASTER und MINION kann auch auf dem selben Server erfolgen, damit dieser ebenfalls wie ein Zielserver angesprochen und verwaltet werden kann!

Master

Zur Installation des MASTER ist die Ausführung von nachfolgender Befehl auf dem entsprechendem Server erforderlich, welcher der MASTER - die zentrale Verwaltungsstelle - sein soll, erforderlich:

# sh /tmp/install_salt.sh -P -M
 *  INFO: Running version: 2019.05.20
 *  INFO: Executed by: shell pipe
 *  INFO: Command line: '/tmp/install_salt.sh -P -M'

 *  INFO: System Information:
 *  INFO:   CPU:          GenuineIntel
 *  INFO:   CPU Arch:     x86_64
 *  INFO:   OS Name:      Linux
 *  INFO:   OS Version:   3.10.0-957.12.2.el7.x86_64
 *  INFO:   Distribution: CentOS 7.6

 *  INFO: Installing minion
 *  INFO: Installing master
 *  INFO: Found function install_centos_stable_deps
 *  INFO: Found function config_salt
 *  INFO: Found function preseed_master
 *  INFO: Found function install_centos_stable
 *  INFO: Found function install_centos_stable_post
 *  INFO: Found function install_centos_restart_daemons
 *  INFO: Found function daemons_running
 *  INFO: Found function install_centos_check_services
 *  INFO: Running install_centos_stable_deps()
Loaded plugins: changelog, priorities
Cleaning repos: adobe-linux-x86_64 base cr epel extras mailserver.guru-os
              : mailserver.guru-testing nux-dextop saltstack updates
27 metadata files removed
18 sqlite files removed
0 metadata files removed
Loaded plugins: changelog, priorities
880 packages excluded due to repository priority protections
Package chkconfig-1.7.4-1.el7.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package PyYAML.x86_64 0:3.10-11.el7 will be installed
--> Processing Dependency: libyaml-0.so.2()(64bit) for package: PyYAML-3.10-11.el7.x86_64
---> Package yum-utils.noarch 0:1.1.31-50.el7 will be installed
--> Processing Dependency: python-kitchen for package: yum-utils-1.1.31-50.el7.noarch
--> Running transaction check
---> Package libyaml.x86_64 0:0.1.4-11.el7_0 will be installed
---> Package python-kitchen.noarch 0:1.1.1-5.el7 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package               Arch          Version                  Repository   Size
================================================================================
Installing:
 PyYAML                x86_64        3.10-11.el7              base        153 k
 yum-utils             noarch        1.1.31-50.el7            base        121 k
Installing for dependencies:
 libyaml               x86_64        0.1.4-11.el7_0           base         55 k
 python-kitchen        noarch        1.1.1-5.el7              base        267 k

Transaction Summary
================================================================================
Install  2 Packages (+2 Dependent packages)

Total download size: 596 k
Installed size: 2.5 M
Downloading packages:
--------------------------------------------------------------------------------
Total                                              829 kB/s | 596 kB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : python-kitchen-1.1.1-5.el7.noarch                            1/4 
  Installing : libyaml-0.1.4-11.el7_0.x86_64                                2/4 
  Installing : PyYAML-3.10-11.el7.x86_64                                    3/4 
  Installing : yum-utils-1.1.31-50.el7.noarch                               4/4 
  Verifying  : libyaml-0.1.4-11.el7_0.x86_64                                1/4 
  Verifying  : python-kitchen-1.1.1-5.el7.noarch                            2/4 
  Verifying  : yum-utils-1.1.31-50.el7.noarch                               3/4 
  Verifying  : PyYAML-3.10-11.el7.x86_64                                    4/4 

Installed:
  PyYAML.x86_64 0:3.10-11.el7          yum-utils.noarch 0:1.1.31-50.el7         

Dependency Installed:
  libyaml.x86_64 0:0.1.4-11.el7_0      python-kitchen.noarch 0:1.1.1-5.el7     

Complete!
 *  INFO: Running install_centos_stable()
Loaded plugins: changelog, priorities
880 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package salt-master.noarch 0:2015.5.10-2.el7 will be installed
--> Processing Dependency: salt = 2015.5.10-2.el7 for package: salt-master-2015.5.10-2.el7.noarch
--> Processing Dependency: systemd-python for package: salt-master-2015.5.10-2.el7.noarch
---> Package salt-minion.noarch 0:2015.5.10-2.el7 will be installed
--> Running transaction check
---> Package salt.noarch 0:2015.5.10-2.el7 will be installed
--> Processing Dependency: python-crypto for package: salt-2015.5.10-2.el7.noarch
--> Processing Dependency: python-jinja2 for package: salt-2015.5.10-2.el7.noarch
--> Processing Dependency: python-msgpack for package: salt-2015.5.10-2.el7.noarch
--> Processing Dependency: python-zmq for package: salt-2015.5.10-2.el7.noarch
---> Package systemd-python.x86_64 0:219-62.el7_6.6 will be installed
--> Running transaction check
---> Package python-jinja2.noarch 0:2.7.2-3.el7_6 will be installed
--> Processing Dependency: python-babel >= 0.8 for package: python-jinja2-2.7.2-3.el7_6.noarch
--> Processing Dependency: python-markupsafe for package: python-jinja2-2.7.2-3.el7_6.noarch
---> Package python-zmq.x86_64 0:14.3.1-1.el7 will be installed
--> Processing Dependency: libzmq.so.3()(64bit) for package: python-zmq-14.3.1-1.el7.x86_64
---> Package python2-crypto.x86_64 0:2.6.1-15.el7 will be installed
--> Processing Dependency: libtomcrypt.so.0()(64bit) for package: python2-crypto-2.6.1-15.el7.x86_64
---> Package python2-msgpack.x86_64 0:0.5.6-5.el7 will be installed
--> Running transaction check
---> Package libtomcrypt.x86_64 0:1.17-26.el7 will be installed
--> Processing Dependency: libtommath >= 0.42.0 for package: libtomcrypt-1.17-26.el7.x86_64
--> Processing Dependency: libtommath.so.0()(64bit) for package: libtomcrypt-1.17-26.el7.x86_64
---> Package python-babel.noarch 0:0.9.6-8.el7 will be installed
---> Package python-markupsafe.x86_64 0:0.11-10.el7 will be installed
---> Package zeromq3.x86_64 0:3.2.5-1.el7 will be installed
--> Processing Dependency: libpgm-5.2.so.0()(64bit) for package: zeromq3-3.2.5-1.el7.x86_64
--> Running transaction check
---> Package libtommath.x86_64 0:0.42.0-6.el7 will be installed
---> Package openpgm.x86_64 0:5.2.122-2.el7 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package                 Arch         Version               Repository     Size
================================================================================
Installing:
 salt-master             noarch       2015.5.10-2.el7       epel          1.0 M
 salt-minion             noarch       2015.5.10-2.el7       epel           26 k
Installing for dependencies:
 libtomcrypt             x86_64       1.17-26.el7           extras        224 k
 libtommath              x86_64       0.42.0-6.el7          extras         36 k
 openpgm                 x86_64       5.2.122-2.el7         epel          171 k
 python-babel            noarch       0.9.6-8.el7           base          1.4 M
 python-jinja2           noarch       2.7.2-3.el7_6         updates       518 k
 python-markupsafe       x86_64       0.11-10.el7           base           25 k
 python-zmq              x86_64       14.3.1-1.el7          epel          468 k
 python2-crypto          x86_64       2.6.1-15.el7          extras        477 k
 python2-msgpack         x86_64       0.5.6-5.el7           epel           64 k
 salt                    noarch       2015.5.10-2.el7       epel          4.1 M
 systemd-python          x86_64       219-62.el7_6.6        updates       133 k
 zeromq3                 x86_64       3.2.5-1.el7           epel          344 k

Transaction Summary
================================================================================
Install  2 Packages (+12 Dependent packages)

Total download size: 8.9 M
Installed size: 33 M
Downloading packages:
--------------------------------------------------------------------------------
Total                                              1.2 MB/s | 8.9 MB  00:07     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : systemd-python-219-62.el7_6.6.x86_64                        1/14 
  Installing : python-babel-0.9.6-8.el7.noarch                             2/14 
  Installing : libtommath-0.42.0-6.el7.x86_64                              3/14 
  Installing : libtomcrypt-1.17-26.el7.x86_64                              4/14 
  Installing : python2-crypto-2.6.1-15.el7.x86_64                          5/14 
  Installing : python2-msgpack-0.5.6-5.el7.x86_64                          6/14 
  Installing : openpgm-5.2.122-2.el7.x86_64                                7/14 
  Installing : zeromq3-3.2.5-1.el7.x86_64                                  8/14 
  Installing : python-zmq-14.3.1-1.el7.x86_64                              9/14 
  Installing : python-markupsafe-0.11-10.el7.x86_64                       10/14 
  Installing : python-jinja2-2.7.2-3.el7_6.noarch                         11/14 
  Installing : salt-2015.5.10-2.el7.noarch                                12/14 
  Installing : salt-master-2015.5.10-2.el7.noarch                         13/14 
  Installing : salt-minion-2015.5.10-2.el7.noarch                         14/14 
  Verifying  : python-markupsafe-0.11-10.el7.x86_64                        1/14 
  Verifying  : openpgm-5.2.122-2.el7.x86_64                                2/14 
  Verifying  : python2-msgpack-0.5.6-5.el7.x86_64                          3/14 
  Verifying  : salt-master-2015.5.10-2.el7.noarch                          4/14 
  Verifying  : salt-minion-2015.5.10-2.el7.noarch                          5/14 
  Verifying  : salt-2015.5.10-2.el7.noarch                                 6/14 
  Verifying  : zeromq3-3.2.5-1.el7.x86_64                                  7/14 
  Verifying  : libtommath-0.42.0-6.el7.x86_64                              8/14 
  Verifying  : python-jinja2-2.7.2-3.el7_6.noarch                          9/14 
  Verifying  : python2-crypto-2.6.1-15.el7.x86_64                         10/14 
  Verifying  : python-zmq-14.3.1-1.el7.x86_64                             11/14 
  Verifying  : python-babel-0.9.6-8.el7.noarch                            12/14 
  Verifying  : libtomcrypt-1.17-26.el7.x86_64                             13/14 
  Verifying  : systemd-python-219-62.el7_6.6.x86_64                       14/14 

Installed:
  salt-master.noarch 0:2015.5.10-2.el7   salt-minion.noarch 0:2015.5.10-2.el7  

Dependency Installed:
  libtomcrypt.x86_64 0:1.17-26.el7       libtommath.x86_64 0:0.42.0-6.el7      
  openpgm.x86_64 0:5.2.122-2.el7         python-babel.noarch 0:0.9.6-8.el7     
  python-jinja2.noarch 0:2.7.2-3.el7_6   python-markupsafe.x86_64 0:0.11-10.el7
  python-zmq.x86_64 0:14.3.1-1.el7       python2-crypto.x86_64 0:2.6.1-15.el7  
  python2-msgpack.x86_64 0:0.5.6-5.el7   salt.noarch 0:2015.5.10-2.el7         
  systemd-python.x86_64 0:219-62.el7_6.6 zeromq3.x86_64 0:3.2.5-1.el7          

Complete!
 *  INFO: Running install_centos_stable_post()
 *  INFO: Running install_centos_check_services()
 *  INFO: Running install_centos_restart_daemons()
 *  INFO: Running daemons_running()
 *  INFO: Salt installed!

:!: HINWEIS - Der SaltStack-MASTER kann sich selbst verwalten, so dass standardmäßig zusammen mit dem SaltStack-MASTER auch ein SaltStack-MINION installiert wird.

:!: HINWEIS - Wenn der SaltStack-MINION nicht installieren werden soll, muss die Option -N zusätzlich an den oben gezeigten Befehl angefügt werden, wie nachfolgendes Beispiel zeigt:

# sh /tmp/install_salt.sh -P -M -N

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket salt-master installiert wurden:

# rpm -qil salt-master
Name        : salt-master
Version     : 2015.5.10
Release     : 2.el7
Architecture: noarch
Install Date: Tue 28 May 2019 11:13:45 AM CEST
Group       : System Environment/Daemons
Size        : 1061800
License     : ASL 2.0
Signature   : RSA/SHA256, Wed 01 Jun 2016 09:45:00 AM CEST, Key ID 6a2faea2352c64e5
Source RPM  : salt-2015.5.10-2.el7.src.rpm
Build Date  : Tue 31 May 2016 04:12:16 PM CEST
Build Host  : buildhw-06.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://saltstack.org/
Summary     : Management component for salt, a parallel remote execution system
Description :
The Salt master is the central server to which all minions connect.
/etc/salt/master
/usr/bin/salt
/usr/bin/salt-cp
/usr/bin/salt-key
/usr/bin/salt-master
/usr/bin/salt-run
/usr/bin/salt-unity
/usr/lib/systemd/system/salt-master.service
/usr/share/man/man1/salt-cp.1.gz
/usr/share/man/man1/salt-key.1.gz
/usr/share/man/man1/salt-master.1.gz
/usr/share/man/man1/salt-run.1.gz
/usr/share/man/man1/salt-unity.1.gz
/usr/share/man/man7/salt.7.gz

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket salt-minion installiert wurden:

# rpm -qil salt-minion
Name        : salt-minion
Version     : 2015.5.10
Release     : 2.el7
Architecture: noarch
Install Date: Tue 28 May 2019 11:13:46 AM CEST
Group       : System Environment/Daemons
Size        : 30620
License     : ASL 2.0
Signature   : RSA/SHA256, Wed 01 Jun 2016 09:43:53 AM CEST, Key ID 6a2faea2352c64e5
Source RPM  : salt-2015.5.10-2.el7.src.rpm
Build Date  : Tue 31 May 2016 04:12:16 PM CEST
Build Host  : buildhw-06.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://saltstack.org/
Summary     : Client component for Salt, a parallel remote execution system
Description :
The Salt minion is the agent component of Salt. It listens for instructions
from the master, runs jobs, and returns results back to the master.
/etc/salt/minion
/usr/bin/salt-call
/usr/bin/salt-minion
/usr/lib/systemd/system/salt-minion.service
/usr/share/man/man1/salt-call.1.gz
/usr/share/man/man1/salt-minion.1.gz

/etc/yum.repos.d/saltstack.repo

Nachfolgendes Repository

  • saltstack.repo

wurde im Verzeichnis

  • /etc/yum.repos.d/

installiert.

Minion

Zur Installation des MINION ist die Ausführung von nachfolgender Befehl auf dem entsprechendem Server erforderlich, welcher den MINION - den Agenten - beheimaten soll, erforderlich:

# sh /tmp/install_salt.sh -P
 *  INFO: Running version: 2019.05.20
 *  INFO: Executed by: sh
 *  INFO: Command line: '/tmp/install_salt.sh -P'

 *  INFO: System Information:
 *  INFO:   CPU:          GenuineIntel
 *  INFO:   CPU Arch:     x86_64
 *  INFO:   OS Name:      Linux
 *  INFO:   OS Version:   3.10.0-957.12.2.el7.x86_64
 *  INFO:   Distribution: CentOS 7.6

 *  INFO: Installing minion
 *  INFO: Found function install_centos_stable_deps
 *  INFO: Found function config_salt
 *  INFO: Found function preseed_master
 *  INFO: Found function install_centos_stable
 *  INFO: Found function install_centos_stable_post
 *  INFO: Found function install_centos_restart_daemons
 *  INFO: Found function daemons_running
 *  INFO: Found function install_centos_check_services
 *  INFO: Running install_centos_stable_deps()
Loaded plugins: changelog, priorities
880 packages excluded due to repository priority protections
Package yum-utils-1.1.31-50.el7.noarch already installed and latest version
Package chkconfig-1.7.4-1.el7.x86_64 already installed and latest version
Package PyYAML-3.10-11.el7.x86_64 already installed and latest version
Nothing to do
 *  INFO: Running install_centos_stable()
Loaded plugins: changelog, priorities
880 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package salt-minion.noarch 0:2015.5.10-2.el7 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package             Arch           Version                  Repository    Size
================================================================================
Installing:
 salt-minion         noarch         2015.5.10-2.el7          epel          26 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 26 k
Installed size: 30 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : salt-minion-2015.5.10-2.el7.noarch                           1/1 
  Verifying  : salt-minion-2015.5.10-2.el7.noarch                           1/1 

Installed:
  salt-minion.noarch 0:2015.5.10-2.el7                                          

Complete!
 *  INFO: Running install_centos_stable_post()
 *  INFO: Running install_centos_check_services()
 *  INFO: Running install_centos_restart_daemons()
 *  INFO: Running daemons_running()
 *  INFO: Salt installed!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket salt-minion installiert wurden:

# rpm -qil salt-minion
Name        : salt-minion
Version     : 2015.5.10
Release     : 2.el7
Architecture: noarch
Install Date: Tue 28 May 2019 11:13:46 AM CEST
Group       : System Environment/Daemons
Size        : 30620
License     : ASL 2.0
Signature   : RSA/SHA256, Wed 01 Jun 2016 09:43:53 AM CEST, Key ID 6a2faea2352c64e5
Source RPM  : salt-2015.5.10-2.el7.src.rpm
Build Date  : Tue 31 May 2016 04:12:16 PM CEST
Build Host  : buildhw-06.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://saltstack.org/
Summary     : Client component for Salt, a parallel remote execution system
Description :
The Salt minion is the agent component of Salt. It listens for instructions
from the master, runs jobs, and returns results back to the master.
/etc/salt/minion
/usr/bin/salt-call
/usr/bin/salt-minion
/usr/lib/systemd/system/salt-minion.service
/usr/share/man/man1/salt-call.1.gz
/usr/share/man/man1/salt-minion.1.gz

/etc/yum.repos.d/saltstack.repo

Nachfolgendes Repository

  • saltstack.repo

wurde im Verzeichnis

  • /etc/yum.repos.d/

installiert.

iptables Regel

Damit die Kommunikation zwischen MASTER und MINION möglich ist und nicht die Weitergabe der Konfigurationsinformationen vom Paketfilter iptables blockiert wird, müssen nachfolgende Regeln zum iptables-Regelwerk hinzugefügt werden.

Um die aktuellen iptables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22  
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Nachfolgende Befehle, fügen folgende iptables-Regeln dem iptables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A INPUT -s 192.168.178.0/24 -p tcp --dport 4505:4506 -j ACCEPT

und hier die Befehle:

# iptables -I INPUT 5 -s 192.168.178.0/24 -p tcp --dport 4505:4506 -j ACCEPT

Ein erneute Abfrage des iptables-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5        0     0 ACCEPT     tcp  --  *      *       192.168.178.0/24     0.0.0.0/0           tcp dpts:4505:4506
6        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 6 packets, 936 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Die neue Zeile ist an Position 5 zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     tcp  --  *      *       192.168.178.0/24     0.0.0.0/0           tcp dpts:4505:4506
...

Um diese iptables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# /usr/sbin/iptables-save > /etc/sysconfig/iptables 

Daemon Start

Nach der Installation des SaltStack wurden durch das Salt Bootstrap Skript die Start-Skripte im systemd-Umfeld bereits aktiviert (enabled) und die Dienste (service)

  • salt-master.service
  • salt-minion.service

sind bereits gestartet. Dies kann durch nachfolgende Abfragen überprüft werden:

# systemctl list-unit-files --type=service | grep -e salt*
salt-master.service                           enabled 
salt-minion.service                           enabled
und
# systemctl status salt-master.service salt-minion.service
● salt-master.service - The Salt Master Server
   Loaded: loaded (/usr/lib/systemd/system/salt-master.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-05-28 11:13:53 CEST; 22h ago
 Main PID: 475 (salt-master)
    Tasks: 113
   CGroup: /system.slice/salt-master.service
           ├─475 /usr/bin/python /usr/bin/salt-master
           ├─487 /usr/bin/python /usr/bin/salt-master
           ├─488 /usr/bin/python /usr/bin/salt-master
           ├─489 /usr/bin/python /usr/bin/salt-master
           ├─494 /usr/bin/python /usr/bin/salt-master
           ├─498 /usr/bin/python /usr/bin/salt-master
           ├─502 /usr/bin/python /usr/bin/salt-master
           ├─505 /usr/bin/python /usr/bin/salt-master
           ├─508 /usr/bin/python /usr/bin/salt-master
           ├─512 /usr/bin/python /usr/bin/salt-master
           └─516 /usr/bin/python /usr/bin/salt-master

May 28 11:13:52 pml125.home.tachtler.net systemd[1]: Starting The Salt Master...
May 28 11:13:53 pml125.home.tachtler.net systemd[1]: Started The Salt Master ...

● salt-minion.service - The Salt Minion
   Loaded: loaded (/usr/lib/systemd/system/salt-minion.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-05-28 11:41:27 CEST; 21h ago
 Main PID: 2524 (salt-minion)
    Tasks: 3
   CGroup: /system.slice/salt-minion.service
           ├─2524 /usr/bin/python /usr/bin/salt-minion
           └─2528 /usr/bin/python /usr/bin/salt-minion

May 29 09:35:37 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] DNS lo...
May 29 09:35:37 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] Master...
May 29 09:36:07 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] DNS lo...
May 29 09:36:07 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] Master...
May 29 09:36:37 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] DNS lo...
May 29 09:36:37 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] Master...
May 29 09:37:07 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] DNS lo...
May 29 09:37:07 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] Master...
May 29 09:37:37 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] DNS lo...
May 29 09:37:37 pml125.home.tachtler.net salt-minion[2524]: [ERROR   ] Master...
Hint: Some lines were ellipsized, use -l to show in full.

:!: HINWEIS - Da noch keine Konfiguration durchgeführt wurde, bitte die Fehlermeldungen des salt-minion.service hier an dieser Stelle erst einmal ignorieren!

Konfiguration: Kommunikation

Die hauptsächliche Konfiguration von Salt erfolgt unterhalb der Verzeichnisstruktur von

  • /etc/salt

Dies gilt für den salt-master und auch für den salt-minion.

:!: HINWEIS - Nachfolgende Konfigurationen erfolgen auf dem selben Server, der gleichzeitig salt-master und salt-minion ist!

Minion: Minion-ID ermitteln

Damit ein Minion-Daemon mit dem Master-Daemon kommunizieren kann, muss für den Minion-Daemon eine eindeutige Minion-ID vorhanden sein. Diese Minion-ID ist standardmäßig der

  • Hostname

des jeweiligen Servers, auf dem der Minion-Daemon läuft.

Nachfolgender Befehl gibt die Minion-ID des Minion-Daemon auf dem jeweiligen Server auf dem dieser läuft aus:

# cat /etc/salt/minion_id
pml125.home.tachtler.net

Minion: Schlüssel erstellen

:!: WICHTIG - Dies muss auf jedem Server mit Minion-Daemon durchgeführt werden!

Salt verwendet öffentliche Schlüssel zur Authentifizierung mit dem Master-Daemon und verwendet dann eine schnellere AES-Verschlüsselung für die Nutzlastkommunikation; Authentifizierung und Verschlüsselung, welche ebenfalls Bestandteil von Salt sind.

Die weiteren Befehlsausführungen sollen im Verzeichnis, welches auch das Verzeichnis ist, in dem der Minion-Daemon dessen eigene Schlüssel erwartet

  • /etc/salt/pki/minion

durchgeführt werden und dafür kann mit nachfolgendem Befehl:

# cd /etc/salt/pki/minion
in das Verzeichnis gewechselt werden.

Damit eine Minion-Daemon mit dem Master-Daemon kommunizieren kann, muss für den Minion-Daemon ein PGP-Schlüsselpaar erstellt werden.

:!: WICHTIG - Es ist notwendig, dass die öffentliche Schlüsseldatei den gleichen Namen wie die Minion-ID hat. Auf diese Weise verknüpft Salt die MINIONS und deren Minion-ID mit dem jeweiligen MINION-Schlüsseln!

:!: HINWEIS - In diesem Beispiel lautet die Minion-ID: pml125.home.tachtler.net

Zur Ermittlung der jeweiligen Minion-ID siehe auch nachfolgenden internen Link:

Nachfolgender Befehl generiert ein PGP-Schlüssselpaar für den Minion-Daemon mit dessen Minion-ID als Namen:

# salt-key --gen-keys=pml125.home.tachtler.net

Ob die Erstellung des PGP-Schlüsselpaares erfolgreich war, kann mit nachfolgendem Befehl überprüft werden:

# ls -l /etc/salt/pki/minion/pml125.home.tachtler.net.*
-r-------- 1 root root 1675 May 29 22:22 /etc/salt/pki/minion/pml125.home.tachtler.net.pem
-rw-r--r-- 1 root root  451 May 29 22:22 /etc/salt/pki/minion/pml125.home.tachtler.net.pub

Minion: Schlüssel kopieren

Damit der Minion-Daemon mit dem Master-Daemon kommunizieren kann, muss das zuvor erstellte Schlüsselpaar, mit der entsprechenden Minion-ID, in dem Verzeichnis

  • /etc/salt/pki/minion/

vorhanden sein bzw. in das Verzeichnis kopiert werden.

:!: WICHTIG - Wenn MASTER und MINION nicht auf dem gleichen Server laufen, kann dies mit dem Befehl scp durchgeführt werden!

# scp /etc/salt/pki/minion/pml125.home.tachtler.net.* [user]@[server]:/etc/salt/pki/minion/

Ob die Schlüssel, mit der entsprechenden Minion-ID kopiert wurde, kann auf dem MASTER mit nachfolgendem Befehl überprüft werden:

# ls -l /etc/salt/pki/minion
total 16
-r-------- 1 root root 1675 May 29 22:30 minion.pem
-rw-r--r-- 1 root root  451 May 29 22:30 minion.pub
-r-------- 1 root root 1675 May 29 22:28 pml125.home.tachtler.net.pem
-rw-r--r-- 1 root root  451 May 29 22:28 pml125.home.tachtler.net.pub

Minion: Master konfigurieren

Damit der Minion-Daemon weiss, wer sein Master-Daemon ist, muss dieser in der Konfigurationsdatei:

  • /etc/salt/minion

konfiguriert werden.

Dazu muss der Parameter master: wie folgt auf den DNS-Namen des Master-Daemon ergänzt werden, wie nachfolgende Konfiguration zeigt:

(Nur relevanter Ausschnitt)

# Set the location of the salt master server. If the master server cannot be
# resolved, then the minion will fail to start.
# Tachtler
# default: #master: salt
master: pml125.home.tachtler.net

:!: ACHTUNG - Da sich hier Master-Daemon und Minion-Daemon auf dem selben Server befinden, ist hier der Name ebenfalls: pml125.home.tachtler.net!

Minion: Daemon Neustart

Damit der Minion-Daemon die zuvor durchgeführten Konfigurationen honoriert, muss der Minion-Daemon neu gestartet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl restart salt-minion.service

Nach dem Neustart kann mit nachfolgendem Befehl der Status des Minion-Daemon überprüft werden:

# systemctl status salt-minion.service
● salt-minion.service - The Salt Minion
   Loaded: loaded (/usr/lib/systemd/system/salt-minion.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-05-29 12:40:58 CEST; 1s ago
 Main PID: 19553 (salt-minion)
    Tasks: 3
   CGroup: /system.slice/salt-minion.service
           ├─19553 /usr/bin/python /usr/bin/salt-minion
           └─19556 /usr/bin/python /usr/bin/salt-minion

May 29 12:40:58 pml125.home.tachtler.net systemd[1]: Started The Salt Minion.
May 29 12:40:59 pml125.home.tachtler.net salt-minion[19553]: [ERROR   ] The S...
Hint: Some lines were ellipsized, use -l to show in full.

:!: WICHTIG - Die Ausgabe eines Fehlers [ERROR ] The S… ist zu diesem Zeitpunkt normal!

Die Vollständige Fehlermeldung lautet hier:

May 29 12:42:09 pml125.home.tachtler.net salt-minion[19553]: [ERROR   ] The Salt Master has cached the public
key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate

Master: Daemon Neustart

Damit der Master-Daemon die zuvor durchgeführten Konfigurationen honoriert, muss der Master-Daemon neu gestartet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# systemctl restart salt-master.service

Nach dem Neustart kann mit nachfolgendem Befehl der Status des Master-Daemon überprüft werden:

# systemctl status salt-master.service
● salt-master.service - The Salt Master Server
   Loaded: loaded (/usr/lib/systemd/system/salt-master.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-05-29 12:43:01 CEST; 4s ago
 Main PID: 19669 (salt-master)
    Tasks: 113
   CGroup: /system.slice/salt-master.service
           ├─19669 /usr/bin/python /usr/bin/salt-master
           ├─19676 /usr/bin/python /usr/bin/salt-master
           ├─19677 /usr/bin/python /usr/bin/salt-master
           ├─19678 /usr/bin/python /usr/bin/salt-master
           ├─19679 /usr/bin/python /usr/bin/salt-master
           ├─19684 /usr/bin/python /usr/bin/salt-master
           ├─19685 /usr/bin/python /usr/bin/salt-master
           ├─19688 /usr/bin/python /usr/bin/salt-master
           ├─19691 /usr/bin/python /usr/bin/salt-master
           ├─19694 /usr/bin/python /usr/bin/salt-master
           └─19699 /usr/bin/python /usr/bin/salt-master

May 29 12:43:00 pml125.home.tachtler.net systemd[1]: Stopped The Salt Master ...
May 29 12:43:00 pml125.home.tachtler.net systemd[1]: Starting The Salt Master...
May 29 12:43:01 pml125.home.tachtler.net systemd[1]: Started The Salt Master ...
Hint: Some lines were ellipsized, use -l to show in full.

Master: Schlüssel akzeptieren

Nachfolgender Befehl soll überprüfen, welche öffentliche Schlüssel der Master-Deamon von den jeweiligen Minion-Daemon akzeptiert und auch (noch) nicht akzeptiert:

# salt-key --list all
Accepted Keys:
Denied Keys:
Unaccepted Keys:
pml125.home.tachtler.net
Rejected Keys:

Damit der Master-Daemon den öffentlichen Schlüssel des Minion-Daemon akzeptiert (welcher in oben gezeigter Auflistung unter Unaccepted Keys: gelistet ist) ist nachfolgender Befehl notwendig:

:!: HINWEIS - Bei der Nachfrage unter Proceed? [n/Y] ist ein Y [Hochstellen]+[y]-Taste einzugeben!

# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
pml125.home.tachtler.net
Proceed? [n/Y] Y
Key for minion pml125.home.tachtler.net accepted.

Anschließend noch einmal die Überprüfung, welche öffentliche Schlüssel der Master-Deamon von den jeweiligen Minion-Daemon akzeptiert akzeptiert:

# salt-key --list all
Accepted Keys:
pml125.home.tachtler.net
Denied Keys:
Unaccepted Keys:
Rejected Keys:

:!: HINWEIS - Dies behebt auch den zuvor gesehenen Fehler!

Die Vollständige Fehlermeldung lautete zuvor:

May 29 12:42:09 pml125.home.tachtler.net salt-minion[19553]: [ERROR   ] The Salt Master has cached the public
key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticate

Master: Kommunikation überprüfen

Nachfolgender Befehl über die Salt-Befehlseingabe, auf dem MASTER ausgeführt, überprüft, ob die Kommunikation zwischen dem MASTER und dem MINION(s) erfolgreich zustande kommt und gibt für alle definierten MINION(s) deren Salt-Version zurück:

# salt '*' test.version
pml125.home.tachtler.net:
    2015.5.10

FIXME

:!: Hier geht es weiter… / To be continued…

Nützliche Befehle

Befehl Beschreibung
salt-key --gen-keys=[hostname] Erstellen eines Schlüsselpaares.
salt-key --list all Auflistung aller dem MASTER bekannten Schlüssel
salt-key --list=[value] Auflistung aller dem MASTER bekannten Schlüssel aus den Bereichen pre, un, acc und rej
salt-key -A Akzeptieren aller noch nicht akzeptierten Schlüssel
salt-key --accept=[keyname] Akzeptieren des Schlüssel mit dem Namen [keyname]
salt-key -R Zurückweisen aller noch nicht akzeptierten Schlüssel
salt-key --reject=[keyname] Zurückweisen des noch nicht akzeptierten Schlüssel mit dem Namen [keyname]
salt-key -F Fingerprint aller Schlüssel
salt-key --finger=[keyname] Fingerprint des Schlüssel mit dem Namen [keyname]
salt-key -D Löschen aller Schlüssel
salt-key --delete=[keyname] Löschen des Schlüssel mit dem Namen [keyname]
salt '*' test.version Anzeige der Salt-Version aller erreichbaren MINION(s)
salt '[hostname]' test.version Anzeige der Salt-Version des MINION mit dem Namen [hostname]
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/saltstack.txt · Zuletzt geändert: 2019/05/29 13:34 von klaus