> For the complete documentation index, see [llms.txt](https://thorstenkramm.gitbook.io/saltstack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://thorstenkramm.gitbook.io/saltstack/top.sls.md).

# top.sls

Komplett-Rollouts und Rollenzuweisung

In allen Beispielen wurden States immer unter Angabe des State-Namens ausgerollt nach dem Prinzip `salt <MINION> state.apply <DIR>.<STATE>`.

Es ist aber auch möglich, Minions States fest zuzuweisen und dann alle für den Minion vorgesehenen States "in einem Rutsch" auszurollen. Gibt man hinter `state.apply` keinen State an, sucht der Salt-Master nach der Datei `/srv/salt/top.sls`, in welcher die 📖 [Zuweisung States zu Minion definiert](https://docs.saltproject.io/en/latest/ref/states/top.html) werden kann. Grains können verwendet werden, um States abhängig von Minion-Eigenschaften zuzuweisen.

{% code title="/srv/salt/top.sls" %}

```yaml
base:
  '*':
    - users 

  debian:
    - match: nodegroup
    - init.debian

  'role:webserver':
    - match: grain
    - caddy

  minion1:
    - caddy.php

  'os:(RedHat|CentOS)':
    - match: grain_pcre
    - init.centos
```

{% endcode %}

📖 [Hier finden Sie ein umfangreicheres Beispiel](https://docs.saltproject.io/en/latest/ref/states/top.html#advanced-minion-targeting), welches fast alle Filteroptionen der `top.sls` erklärt.&#x20;

Warum befindet sich die gesamte Konfiguration unterhalb von `base`?\
`base` gibt die Umgebung (Environment) an. Unterschiedliche Umgebungen können als Verzeichnisbaum unterhalb vom `file_rolle` i. d. R. `/srv/salt` angelegt werden. Weitere Informationen [hier](https://docs.saltproject.io/en/latest/ref/states/top.html#environments).

#### 🧩 Aufgabe

Erzeugen Sie mit LXD einen neuen Container, installieren Sie den Salt-Minion und bringen Sie diesen mit dem Kommando `salt <NEW-MINION> state.apply` in den gewünschten Zustand.
