Nachdem Sie den SaltStack Config-Dienst installiert und integriert haben, müssen Sie auch den Salt-Minion-Dienst auf allen Knoten installieren, ausführen und registrieren, die Sie mithilfe von SaltStack Config verwalten möchten. Sie können den Salt-Minion-Dienst entweder unter Verwendung von vRealize Automation-Cloud-Vorlagen oder durch die Installation des Dienstes über Secure Shell (SSH) für Ihre Knoten bereitstellen.

Salt und seine Beziehung zu SaltStack Config

SaltStack Config wird auf Salt ausgeführt, einem Python-basierten Open-Source-Remoteausführungs-Framework, das für Folgendes verwendet wird:

  • Konfigurationsverwaltung
  • Automatisierung
  • Bereitstellung
  • Orchestrierung

Salt ist die Technologie, die der Kernfunktionalität von SaltStack Config zugrunde liegt. SaltStack Config verbessert und erweitert Salt und bietet zusätzliche Funktionen und Features, welche die Benutzerfreundlichkeit verbessern.

Salt verwendet das Controller-Client-Modell, bei dem ein Controller Befehle an einen Client ausgibt und der Client den Befehl ausführt. Im Salt-Ökosystem ist der Controller ein Server, auf dem der Salt-Master-Dienst ausgeführt wird. Er gibt Befehle an ein oder mehrere Salt-Minions aus, bei denen es sich um Knoten handelt, die den Salt-Minion-Dienst ausführen und die bei diesem speziellen Master registriert sind.

Salt kann auch als Herausgeber-/Abonnentenmodell beschrieben werden. Der Master veröffentlicht Aufträge, die ausgeführt werden müssen, und Minions sind die Abonnenten dieser Aufträge. Wenn für einen Minion ein bestimmter Auftrag gilt, führt dieser den Auftrag aus. Wenn ein Minion die Ausführung eines Auftrags abgeschlossen hat, sendet er Auftragsrücksendungsdaten zurück an den Master.

Minions sind Knoten, die den Salt-Minion-Dienst ausführen. Der Dienst hört Befehle aus einem Salt-Master ab und führt die angeforderten Aufgaben durch. Sie können Minions über vRealize Automation-Cloud-Vorlagen bereitstellen.

Bevor Sie mit der Verwendung von SaltStack Config zur Konfigurationsverwaltung beginnen können, müssen Sie zuerst den Salt-Minion-Dienst auf allen Knoten installieren, die Sie verwalten möchten. Sie müssen die Minions auch registrieren, indem Sie deren Schlüssel an SaltStack Config senden bzw. von dort annehmen.

Bevor Sie beginnen

  • Installieren und konfigurieren Sie SaltStack Config und integrieren Sie sie es in vRealize Automation.
  • Knoten, die mithilfe von SaltStack Config verwaltet werden, müssen den Salt-Master erreichen können und sich in demselben Netzwerk wie der SaltStack Config-Integrationspunkt und der Salt-Master befinden.
  • vSphere-Maschinen, die in einem privaten Netzwerk bereitgestellt werden, müssen eine Verbindung mit der SaltStack Config-Integration und dem Salt-Master herstellen können.

Installieren des Salt-Minion-Dienstes über SSH

Der Vorgang zum Installieren des Salt-Minion-Dienstes mithilfe von SSH ist abhängig von dem Betriebssystem, das auf diesen Knoten ausgeführt wird.

Nach der Installation des Salt-Minion-Dienstes:
  1. Konfigurieren Sie jeden Minion für die Kommunikation mit dem Master durch die entsprechende Erstellung einer master.conf-Datei im Verzeichnis /etc/salt/minion.d. Geben Sie in dieser Datei die IP-Adresse des Masters an. Beispiel: master: 192.0.2.1
  2. Starten Sie den Minion-Dienst:

    sudo systemctl enable salt-minion

    sudo systemctl start salt-minion

  3. Wiederholen Sie die vorherigen Schritte für alle verbleibenden Knoten.

Nachdem Sie diese Minion-Dateien so konfiguriert haben, dass sie auf den Salt-Master verweisen, nehmen Sie die Minion-Schlüssel im SaltStack Config-Dienst in der Arbeitsumgebung „Minion-Schlüssel“ an.

Installieren des Salt-Minion-Dienstes mithilfe von vRealize Automation-Cloud-Vorlagen

Um den Salt-Minion-Dienst mithilfe von Cloud-Vorlagen bereitzustellen, müssen Sie auf cloud-init (Linux) oder Cloudbase-init (Windows) zugreifen können und damit vertraut sein. Zum Hinzufügen von Salt-Minions zum Salt-Master, der für die SaltStack Config-Integration konfiguriert ist, muss die virtuelle Maschine in der Cloud-Vorlage cloud-init (Linux) oder Cloudbase-init (Windows) unterstützen.

In den folgenden Abschnitten wird die Bereitstellung des Salt-Minion-Dienstes mithilfe von Cloud-Vorlagen erläutert.

Hinzufügen von Minions zum für vRealize Automation konfigurierten Salt-Master

Nach der Installation von SaltStack Config wird eine Salt-Master-IP-Adresse angegeben. Diese Master-IP-Adresse wird als masterAddress-Eigenschaft verwendet, wenn Sie Minions über eine vRealize Automation-Cloud-Vorlage bereitstellen.

Sie installieren und stellen Minions mithilfe von cloud-init- oder Cloudbase-init-Skripts in einer vRealize Automation-Cloud-Vorlage oder -Bereitstellung bereit. Sie können auch eine Image-Zuordnung verwenden, die ein Cloud-Konfigurationsskript darstellt, das eines dieser Formate verwendet. Zum Hinzufügen von Salt-Minions zum Salt-Master, der mit einer vRealize Automation SaltStack Config-Integration verknüpft ist, muss die Zielmaschine cloud-init (Linux) oder Cloudbase-init (Windows) unterstützen. Cloud-Konfigurationsskripts in vRealize Automation unterstützen beide Formate.

Sie konfigurieren eine Maschinenressource in der Cloud-Vorlage mit dem Wert minionId und cloudConfig und verweisen auf die Eigenschaftsgruppe SaltStackConfiguration. Die Eigenschaftsgruppe SaltStackConfiguration wird während der Installation und Konfiguration des SaltStack Config-Diensts in vRealize Suite Lifecycle Manager erstellt. Sie enthält die Eigenschaften masterAddress und masterFingerprint.

Der Wert minionId muss dem für die /salt/minion_id der Maschine im Abschnitt cloudConfig des Cloud-Vorlagencodes angegebenen Wert entsprechen.

Im Folgenden werden Beispiele für Windows- und Linux-basierten vRealize Automation-Cloud-Vorlagencode angezeigt. Beachten Sie, dass die Cloud-Konfigurationsskripts mit einer der folgenden Methoden angegeben werden können:
  • vRealize Automation-Image, das aus dem Cloud-Vorlagencode aufgerufen wird
  • Cloud-Konfigurationsskript, das aus dem Cloud-Vorlagencode aufgerufen wird
  • Inhalt des Cloud-Konfigurationsskripts, der direkt dem Cloud-Vorlagencode hinzugefügt wird

Hinweis: Wenn Sie eine Cloud-Vorlage bereitstellen, die Salt-Minions enthält, und die Bereitstellung in Cloud Assembly nicht sichtbar ist, können Sie die Bereitstellung mithilfe des Service Broker-Diensts anzeigen.

Beispiel – Linux-basierte Bereitstellung und cloud-init

Eine Beispielkonfiguration einer Cloud-Vorlage zum Bereitstellen von Minions für eine Linux-basierte Maschine, die cloud-init unterstützt, wird im Folgenden angezeigt:
resources:
  Salt-Minion:
    type: Cloud.Machine
    properties:
      image: Ubuntu-18
      flavor: medium
      constraints:
        - tag: 'env:vsphere'
      cloudConfig: |
        #cloud-config
        hostname: ${input.saltminionhostname}
        users:
          - name: ${input.user}
            sudo: ['ALL=(ALL) NOPASSWD:ALL']
            groups: sudo
            shell: /bin/bash
        runcmd:
          - PASS=${input.password}
          - USER=${input.user}
          - echo $USER:$PASS | /usr/sbin/chpasswd
          - sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
          - service ssh reload
          - curl -L https://bootstrap.saltstack.com -o install_salt.sh
          - sudo sh install_salt.sh -A ${propgroup.SaltStackConfiguration.masterAddress}

Beispiel – Windows-basierte Bereitstellung und Cloudbase-init

Eine Beispielkonfiguration einer Cloud-Vorlage zum Bereitstellen von Minions für eine Windows-basierte Maschine, die Cloudbase-init unterstützt, wird im Folgenden angezeigt:
formatVersion: 1
inputs: {}
resources:
  WindowsVM-Minion:
    type: Cloud.vSphere.Machine
    properties:
      image: win2016
      flavor: medium
      customizationSpec: Windows
      minionId: '${resource.WindowsVM-Minion.resourceName}'
      networks:
        - network: '${resource.wpnet.id}'
          name: '${wpnet.name}'
          assignPublicIpAddress: true
      cloudConfig: |
        #ps1_sysnative
        [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -OutFile C:\Salt-Minion-3002.2-Py3-AMD64-Setup.exe -Uri https://repo.saltstack.com/windows/Salt-Minion-3002.2-Py3-AMD64-Setup.exe
        Start-Process -Wait -FilePath "C:\Salt-Minion-3002.2-Py3-AMD64-Setup.exe" -ArgumentList "/S" -PassThru
        ((Get-Content -path C:\salt\conf\minion -Raw) -replace "#master: salt", "master: ${propgroup.SaltStackConfiguration.masterAddress}") | Set-Content -Path C:\salt\conf\minion
        ((Get-Content -path C:\salt\conf\minion -Raw) -replace "#master_finger: ''", "master_finger: '${propgroup.SaltStackConfiguration.masterFingerPrint}'") | Set-Content -Path C:\salt\conf\minion
        Set-Content -Path C:\salt\conf\minion_id -Value '${resource.WindowsVM-Minion.resourceName}'
        C:\salt\salt-call.bat service.restart salt-minion
  wpnet:
    type: Cloud.Network
    properties:
      name: wpnet
      networkType: existing

Vorgehensweise zum Konfigurieren von PowerShell-Befehlen

Sie konfigurieren PowerShell-Befehle im Abschnitt cloudConfig Ihrer Cloud-Vorlagen.

Bevor Sie PowerShell-Befehle aktivieren, laden Sie das Salt-Minion-Paket von der Salt-Repository-Website herunter. Führen Sie dann die folgenden Schritte aus:
  1. Installieren Sie den Salt-Minion-Dienst auf der Windows-VM.
  2. Aktualisieren Sie den Wert des Salt-Master-Hostnamens in der Minion-Konfiguration.
  3. Aktualisieren Sie den Wert des Salt-Master-Fingerabdrucks in der Minion-Konfiguration.
  4. Legen Sie die minion_id auf den VM-Ressourcennamen fest, der zum Akzeptieren des Minions im Salt-Master verwendet wird.
  5. Starten Sie den Minion neu.

Weitere Informationen zum Bereitstellen von Salt-Minions

Alternative Methoden zur Verwendung integrierter SaltStack Config zum Bereitstellen von Salt-Minions über eine vRealize Automation-Cloud-Vorlage finden Sie unter Cloud Assembly and ABX Secrets (and how to use them for installing vRealize SaltStack Minion Agents).

Wenn Sie mit SaltStack, nicht jedoch mit vRealize Automation vertraut sind, finden Sie verwandte Informationen zum Definieren und Bereitstellen allgemeiner Cloud Assembly-Vorlagen unter Entwerfen Ihrer vRealize Automation Cloud Assembly-Bereitstellungen.