RU | EN | DE

Windows

Schritt 1.

  1. Win + R drücken, notepad C:\Windows\System32\drivers\etc\hosts eingeben und Enter drücken (Notepad besser als Administrator ausführen).
  2. Ganz unten folgende Zeile hinzufügen:
192.168.0.14    puppet

(Wenn Windows fragt “Wo ist puppet?”, geht es intern über 192.168.0.14). 3. Datei speichern. 4. Verbindung prüfen. PowerShell (auf Windows Server) öffnen und eingeben:

ping puppet

Antwort von 192.168.0.14 sollte kommen. Wenn der Ping erfolgreich ist — wir sind bereit für die Agent-Installation.

Schritt 2. Windows in einen verwalteten Computer verwandeln (Agent) 🖥️

Da du einen leistungsstarken Windows Server hast, lass uns ihn zum ersten “Client” von Puppet machen! Du kannst seine Einstellungen direkt vom Linux-Server aus verwalten. Dafür muss Windows wissen, wo es den “puppet”-Server suchen soll. Auf Windows:

  1. Win + R drücken, notepad C:\Windows\System32\drivers\etc\hosts eingeben und Enter drücken (Notepad besser als Administrator ausführen).
  2. Ganz unten folgende Zeile hinzufügen:
192.168.0.14    puppet

(Wenn Windows fragt “Wo ist puppet?”, geht es intern über 192.168.0.14). 3. Datei speichern. 4. Verbindung prüfen. PowerShell (auf Windows Server) öffnen und eingeben:

ping puppet

Antwort von 192.168.0.14 sollte kommen. Wenn der Ping erfolgreich ist — wir sind bereit für die Agent-Installation.

Schritt 3. Agent auf Windows installieren 📦

Jetzt das Interessanteste. Den Agent auf Windows Server installieren.

  1. Den offiziellen Installer (MSI) für Windows x64 herunterladen: Puppet Agent Download (Direkt auf Windows Server herunterladen).
  2. Installation starten.
  3. Im Installationsassistenten bis zum Feld Puppet Server durchklicken.
  4. Dort einfach das Wort: puppet eingeben. (Den Rest wie er ist lassen).
  5. Install klicken.

Schritt 4. “Hochzeit” (Zertifikat signieren) 💍

Der Agent auf Windows klopft beim Linux-Server an. Der Server sieht ihn, lässt ihn aber nicht rein, bis du (der Administrator) es erlaubst.

  1. Auf Linux (Puppet Server): Prüfen, ob die Anfrage angekommen ist:
sudo /opt/puppetlabs/bin/puppetserver ca list`

Du solltest so etwas sehen: "win-server-2022.local" (SHA256: ...) — das ist dein Windows, das um Verwaltung bittet. 2. Zugriff erlauben (Zertifikat signieren):

sudo /opt/puppetlabs/bin/puppetserver ca sign --all

(Gibt aus: Successfully signed certificate...).

sudo ln -s /opt/puppetlabs/bin/puppetserver /usr/local/bin/puppetserver
sudo rm -rf /etc/puppetlabs/puppet/ssl

Finale: Verbindung prüfen 🚀

Zurück zu Windows Server, PowerShell als Administrator öffnen und den manuellen Sync-Befehl eingeben:

puppet agent -t

Agent-Intervall ändern

Methode 1. Schnell (Über Kommandozeile) ⚡

Der sicherste Weg, da Puppet selbst die Einstellung in die richtige Datei schreibt und keine Syntaxfehler macht.

  1. Auf Windows Server PowerShell (Admin) öffnen.
  2. Um das Intervall z.B. auf 10 Minuten zu setzen, eingeben:
puppet config set runinterval 10m --section agent

(Man kann s - Sekunden, m - Minuten, h - Stunden verwenden). 3. Wichtig: Damit die Änderung wirksam wird, den Dienst neu starten (sonst läuft er die aktuellen 30 Minuten nach den alten Einstellungen):

Restart-Service puppet

Fertig! Jetzt meldet er sich alle 10 Minuten.

Methode 2. “Chirurgisch” (Über Konfigurationsdatei) 📝

Um zu sehen, wo diese Einstellung physisch liegt:

  1. Notepad als Administrator öffnen.
  2. Datei öffnen: C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf (Der Ordner ProgramData ist normalerweise ausgeblendet, einfach den Pfad in die Öffnungszeile einfügen).
  3. Abschnitt [agent] finden.
  4. Diese Zeile hinzufügen oder ändern:
[agent]
server = puppet
runinterval = 10m
  1. Speichern und Dienst neu starten (Restart-Service puppet).

⚠️ Profi-Tipp

In der echten Produktion kein Intervall unter 5-10 Minuten setzen. Jetzt hast du 1 Server und Puppet schafft es auch mit 1 Minute. Aber wenn es 100 Server werden und sie alle jede Minute beim Master anklopfen — er bricht unter der Last zusammen (DDoS mit eigener Hand).

Empfehlung:

  • Für Tests/Entwicklung: 5m oder 10m.
  • Für Produktion (Live-Server): 30m oder 1h.

Methode 3.

Wir brauchen das Modul puppetlabs-inifile. Es kann eine einzelne Zeile in Textdateien chirurgisch präzise ändern. Auf dem Server eingeben:

sudo /opt/puppetlabs/bin/puppet module install puppetlabs-inifile

Jetzt sagen wir dem Puppet:

  1. Finde deine Konfigurationsdatei.
  2. Finde darin den Parameter runinterval.
  3. Stelle ihn auf 5m (5 Minuten).
  4. Wichtig: Wenn du etwas geändert hast, starte dich selbst neu, damit die Änderungen wirksam werden. site.pp öffnen:
sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

Diesen Code innerhalb des Blocks node 'srv-dc01.vbo.local' hinzufügen:

  # --- Block 5: Agent selbst konfigurieren (Puppet konfiguriert Puppet) ---
 
  # 1. Puppet-Dienst deklarieren, damit wir ihn neu laden können
  service { 'puppet':
    ensure => running,
    enable => true,
  }
 
  # 2. Startfrequenz in der Konfigurationsdatei ändern
  ini_setting { 'change_interval':
    ensure  => present,
    path    => 'C:/ProgramData/PuppetLabs/puppet/etc/puppet.conf',
    section => 'agent',
    setting => 'runinterval',
    value   => '5m',                 # Auf 5 Minuten setzen
    notify  => Service['puppet'],    # MAGIE: Wenn Datei geändert -> Dienst neu starten!
  }

Beachte die Zeile notify. Das ist ein Ereignismechanismus. Der Dienst wird NUR neu gestartet, wenn sich die Datei ändert. Wenn die Datei bereits korrekt ist — kein überflüssiger Neustart.

Zurück zu Windows gehen und den Agent starten (ein letztes Mal manuell, um diese Einstellung anzuwenden):

puppet agent -t