> For the complete documentation index, see [llms.txt](https://docs.enginsight.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enginsight.com/docs/knowledge-base/pulsar/wie-kann-ich-den-enginsight-pulsar-automatisch-auf-mehreren-persistenten-windows-systemen-ausrollen.md).

# Wie kann ich den Enginsight Pulsar automatisch auf mehreren persistenten Windows-Systemen ausrollen?

Es ist möglich, den Enginsight Agenten Pulsar **automatisiert** auf einer beliebigen Anzahl von **persistenten Hosts** mit Windows-Betriebssystem basierend auf einem Master-Image auszurollen.

Die nachfolgend beschriebenen Schritte gelten für folgende Umgebungen:

* *Persistente* Windows-Maschinen (z.B. statische virtuelle Maschinen, physische Server, Clients oder andere Systeme mit dediziertem Hostnamen)

{% hint style="success" icon="lightbulb" %}
Mehr Informationen, wie du den Enginsight Pulsar *manuell* in *persistenten virtuellen* Windows-Umgebungen oder *automatisiert* auf *flüchtigen* Windows-VDIs ausrollst, findest du in der Knowledge Base: [Wie kann ich den Enginsight Pulsar manuell auf mehreren persistenten Windows-VMs ausrollen?](/docs/knowledge-base/pulsar/wie-kann-ich-den-enginsight-pulsar-manuell-auf-mehreren-persistenten-windows-vms-ausrollen.md) und [Wie kann ich den Enginsight Pulsar automatisiert in flüchtigen Windows-VDI-Umgebungen ausrollen?](/docs/knowledge-base/pulsar/wie-kann-ich-den-enginsight-pulsar-automatisiert-in-fluchtigen-windows-vdi-umgebungen-ausrollen.md)
{% endhint %}

***

{% stepper %}
{% step %}

### Pulsar auf einem Master-Host installieren

1. Starte das Windows-System, von dem ein Master-Image mit vorbereitetem Pulsar erstellt werden soll.
2. Navigiere zur Enginsight Plattform und folge den [Installationsanweisungen zum Pulsar](https://docs.enginsight.com/docs/manual/installation-und-konfiguration/installation-und-konfiguration/enginsight-komponenten/pulsar) für die **automatische Installation** *auf* *Windows-Clients* wie im Enginsight Handbuch beschrieben.
3. Speichere dir dabei das Installationsskript aus **Schritt 4** der Pulsar-Installationsanleitung ab, da du es später wieder benötigst.
   {% endstep %}

{% step %}

### Pulsar-Dienste stoppen und Starttyp anpassen

1. Stoppe nach erfolgreicher Installation die Pulsar-Dienste **Enginsight Pulsar** und **Enginsight Supervisor** über eine Administrator-PowerShell mit folgenden Befehlen:

```
Stop-Service "Enginsight Pulsar"
Stop-Service "Enginsight Supervisor"
```

2. Stelle den Starttyp der Pulsar-Dienste mit folgenden Befehlen auf **manuell** um, damit sie beim Erstellen des Images nicht automatisch starten:

```
Set-Service -Name "Enginsight Pulsar" -StartupType Manual
Set-Service -Name "Enginsight Supervisor" -StartupType Manual
```

{% endstep %}

{% step %}

### Master-Host in der Plattform löschen

Navigiere in der Enginsight Plattform zu **Hosts** → **Übersicht** und lösche den bei der Installation des Pulsars automatisch angelegten Windows-Client für das Master-Image.&#x20;

{% hint style="warning" %}
**Bitte beachte**: Das Löschen von Hosts aus der Host-Übersicht hat ***nicht*** die direkte Deinstallation des zugehörigen Pulsars zur Folge.
{% endhint %}
{% endstep %}

{% step %}

### Sicherungskopie der Pulsar-Konfigurationsdatei erstellen

Erstelle mit folgenden Befehlen eine Sicherungskopie der Pulsar-Konfigurationsdatei, da die ursprüngliche Datei beim automatischen Ausrollen des Pulsars überschrieben wird:

```
Copy-Item "C:\Programme\Enginsight\Pulsar\config.json" `
"C:\Programme\Enginsight\Pulsar\config.json.bak"
```

{% hint style="warning" %}
**Bitte beachte**: Sollte beim automatischen Ausrollen des Pulsars etwas nicht wie gewünscht funktionieren, kannst du die ursprüngliche Konfigurationsdatei aus der Sicherung wiederherstellen. Führe dann das Skript für die Provisionierung aus [Schritt 7](#skript-fur-die-provisionierung-abspeichern-und-ausfuhren) erneut aus.
{% endhint %}
{% endstep %}

{% step %}

### Master-Image speichern

Speichere das Master-Image mit vorbereitetem Pulsar ab.
{% endstep %}

{% step %}

### Textdatei mit Host-Namen erstellen

1. Erstelle nun eine **.txt**-Datei, die alle Host-Namen enthält, auf denen der Pulsar ausgerollt werden soll. Achte darauf, dass pro Zeile ein Host-Name steht, z.B.:

```
Beispiel-Host-VM-01
Beispiel-Host-VM-02
Beispiel-Host-VM-03
```

{% hint style="danger" %}
**Bitte beachte**: Die Host-Namen müssen **exakt** den Namen der (virtuellen) Maschinen entsprechen, auf denen ein Pulsar installiert werden soll. Die Standardzuordnung erfolgt über `$env:computername`.
{% endhint %}

2. Speichere die Textdatei mit einem aussagekräftigen Namen ab.
   {% endstep %}

{% step %}

### Skript für die Provisionierung abspeichern und ausführen

1. Kopiere das folgende Skript:

```
param ($hosts, $accessKeyId, $accessKeySecret, $outFolder=".")

if ($hosts -eq $null) {
    throw "Must provide a file (-hosts) with line-by-line hostnames to create configs for"
}

if (($accessKeyId -eq $null) -or ($accessKeySecret -eq $null)) {
    throw "Must provide credentials (-accessKeyId, -accessKeySecret) suitable for Pulsar installation"
}

Write-Host "Creating configs for hosts from ${hosts} in `"${outFolder}`", using existing config.json as template"

if (-not (Test-Path -Path $outFolder)) {
    Write-Host "${outFolder} does not exist, creating it"
    try {
        New-Item -ItemType Directory -Path $outFolder | Out-Null
    } catch {
        throw "Failed to create output folder`n$_"
    }
}

try {
    $configTemplate = Get-Content -Raw -Path "C:\Program Files\Enginsight\Pulsar\config.json" | ConvertFrom-Json
} catch {
    throw "Failed to read C:\Program Files\Enginsight\Pulsar\config.json - is Pulsar installed properly?`n$_"
}

$args = "-install","-accessKeyId",$accessKeyId,"-accessKeySecret",$accessKeySecret,"-license",$configTemplate.license,
    "-api",$configTemplate.api.url
if ($configTemplate.api.proxy -ne "") {
    $args += "-proxy",$configTemplate.api.proxy,"-noProxy",$configTemplate.api.noProxy
}

foreach($hostname in Get-Content $hosts) {
    $hostname = $hostname.Trim()
    if ($hostname -eq "") {
        continue
    }

    $outFile = Join-Path -Path ${outFolder} -ChildPath "config_${hostname}.json"

    if (Test-Path -Path $outFile) {
        Write-Error "Configuration for host ${hostname} already exists at ${outFile}, skipping"
        continue
    }

    $proxyParams = ""

    Write-Host "Creating config for host ${hostname}"

    & "C:\Program Files\Enginsight\Pulsar\ngs-pulsar-amd64.exe" @args
    if (-not ($?)) {
        throw "Failed to create config for ${hostname}"
    }

    try {
        $config = Get-Content -Raw -Path "C:\Program Files\Enginsight\Pulsar\config.json" | ConvertFrom-Json
        $config.override = $configTemplate.override
        if ($configTemplate.tieredTransactionLog -ne $null) {
            $config.tieredTransactionLog = $configTemplate.tieredTransactionLog
        }
    } catch {
        throw "Failed to read newly created config file`n$_"
    }

    try {
        $config | ConvertTo-Json -Depth 4 | Set-Content -Path $outFile -Encoding UTF8NoBOM
        Write-Host "Successfully created config for ${hostname} at ${outFile}"
    } catch {
        throw "Failed to write config for ${hostname} to ${outFile}`n$_"
    }
}
```

2. Speichere das Skript unter dem folgenden Pfad ab:

```
C:\Programme\Enginsight\Pulsar\provision.ps1
```

3. Führe das Skript mit folgendem Befehl aus:

```
& "C:\Program Files\Enginsight\Pulsar\provision.ps1" -hosts "<PfadZurHostsDatei>\<HostsDateiname>.txt" -accessKeyId "<AccessKeyID>" -accessKeySecret "<AccessKeySecret>"
```

{% hint style="info" %}
Vergiss dabei nicht, die folgenden Parameter in `<>` entsprechend zu ersetzen:

* `<PfadZurHostsDatei>`: Der Pfad zur Textdatei, die alle Host-Namen enthält.
* `<HostsDateiname>`: Der Name der Textdatei, die alle Host-Namen enthält.
* `<AccessKeyID>` und `<AccessKeySecret>`: Der Access Key und das Access Key Secret, die du aus dem in [Schritt 1.3](#pulsar-auf-einem-master-host-installieren) gespeicherten Installationsskript erhalten hast.
  {% endhint %}

Mit Ausführung des Skripts wird für jeden Host, der korrekt in der [in Schritt 6](#textdatei-mit-host-namen-erstellen) erstellten Textdatei gelistet wurde, eine eigene Pulsar-Konfigurationsdatei erstellt und ein neuer Host in der Enginsight Plattform unter **Hosts** → **Übersicht** angelegt.

{% hint style="danger" %}
**Bitte beachte**: Jeder Host, der auf diese Weise erstellt wird, verbraucht eine Asset-Lizenz aus deinem Lizenzpaket! Wenn du lizenzierte Assets wieder freigeben möchtest, musst du die entsprechenden Hosts aus der Host-Übersicht in der Enginsight Plattform löschen.&#x20;
{% endhint %}
{% endstep %}

{% step %}

### Pulsar-Dienste auf jedem Host starten und Starttyp anpassen

Nun muss auf jedem Host, auf der ein Pulsar installiert wurde, die passende Konfigurationsdatei in das Pulsar-Verzeichnis kopiert, die Pulsar-Dienste wieder gestartet und der Starttyp auf **automatisch** umgestellt werden.&#x20;

Nutze dazu folgendes Startskript, das du bspw. per Windows-Gruppenrichtlinie auf die entsprechenden Hosts verteilen kannst:

```
cp "<PfadZurKonfigurationsdatei>\config_${env:computername}.json" "C:\Program Files\Enginsight\Pulsar\config.json"
Start-Service "Enginsight Pulsar"

Set-Service -Name "Enginsight Pulsar" -StartupType Automatic
Set-Service -Name "Enginsight Supervisor" -StartupType Automatic
```

{% hint style="info" %}
Vergiss dabei nicht, den Parameter `<PfadZurKonfigurationsdatei>` entsprechend zu ersetzen.
{% endhint %}
{% endstep %}
{% endstepper %}

***

## Weitere Ressourcen

* [Wie kann ich den Enginsight Pulsar manuell auf mehreren persistenten Windows-VMs ausrollen?](/docs/knowledge-base/pulsar/wie-kann-ich-den-enginsight-pulsar-manuell-auf-mehreren-persistenten-windows-vms-ausrollen.md)
* [Wie kann ich den Enginsight Pulsar automatisiert in flüchtigen Windows-VDI-Umgebungen ausrollen?](/docs/knowledge-base/pulsar/wie-kann-ich-den-enginsight-pulsar-automatisiert-in-fluchtigen-windows-vdi-umgebungen-ausrollen.md)
* [Wie kann ich den Enginsight Pulsar per Windows-Gruppenrichtlinie ausrollen?](/docs/knowledge-base/pulsar/wie-kann-ich-den-enginsight-pulsar-per-windows-gruppenrichtlinie-ausrollen.md)

***
