Damit die spätere Kommunikation zwischen den Nodes und dem Master funktioniert, müssen alle Server die gleiche Uhrzeit haben und die korrekte Namensauflösung muss sichergestellt sein. Für die korrekte Zeit empfiehlt es sich den NTP zu verwenden. Da ich nur eine kleine Testumgebung nutze, habe ich für die Namensauflösung die Hostnamen und Ip Adressen auf den Testservern in der /etc/hosts hinterlegt.
Zunächst muss unter dem root Benutzer das Repository von Puppetlabs installiert werden.
rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
Im Anschluss kann der Puppetmaster installiert werden yum -y install puppetserver
.
Der Puppetserver wird über systemctl start puppetserver gestartet, mit der Zeile systemctl enable puppetserver wird der puppetserver bei jedem Start der VM gestartet.
Damit die Nodes mit dem Master kommunizieren können, muss der Port 8140 geöffnet werden.
firewall-cmd --zone=public --permanent --add-port=8140/tcp
Installation Agent
Auf dem Node muss ebenfalls das Repository hinzugefügt und dann der Agent installiert werden.
rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
yum -y install puppet-agent
Damit der Agent weiß welchen Master er ansprechen muss, wird dieser in der Datei /etc/puppetlabs/puppet/puppet.conf wie folgt hinterlegt:
server = FQDN
.
Gestartet wird der Agent über /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
.
Kommunikation
Für die Kommunikation mit dem Master wird auf dem Node ein Zertifikat erstellt. Das Zertifikat wird dem Master vorgelegt und muss dort freigeschaltet werden.
Mit puppet cert list
erhält man auf dem Master eine Übersicht der Node Zertifikate, welche noch nicht freigegeben wurden.
Ein einzelnes Zertifikat kann mit puppet cert sign hostname
freigegeben werden, alle ausstehenden Zertifikate über puppet cert sign --all
Eine Liste aller freigeschalteten Zertifikate (Nodes) erhält man über puppet cert list --all
.