> 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/testumgebung.md).

# Testumgebung

Egal, ob Sie Salt neu lernen oder Salt bereits im produktiven  Einsatz haben. Eine Testumgebung ist unerlässlich. Salt-States sind i. d. R. Kommandos, welche mit Root-Rechten ausgeführt werden. Auf ausführliches Tests dürfen Sie nicht verzichten.&#x20;

Testumgebungen können mit allen Hypervisoren eingerichtet werden. Linux Container (LXD) stellen   eine einfache und effiziente Möglichkeit. LXD stellt komplette Betriebssysteme bereit. Kernel, Hauptspeicher und Festplatte werden mit dem Host geteilt. Das verbraucht deutlich weniger Ressourcen als eine vollwertige Virtualisierung mit VMware, KVM, Virtualbox oder HyperV.

{% hint style="info" %}
**Docker ist keine geeignete Technologie**, um Salt zu testen. Salt verwaltet Betriebssysteme. In einem Docker Container werden i.d.R. aber keine kompletten Betriebssysteme bereitgestellt. Beispielsweise verweden Docker Container nicht Systemd. Systemd ist aber ein Standard um Dienste und weitere Teile des Systems zu verewalten.&#x20;
{% endhint %}

### &#x20;Incus (LXD) installieren

{% tabs %}
{% tab title="Ubuntu" %}

Melden Sie sich als Root-User am System an.

1. Systeme **älter als 24.04** brauchen ein zusätzlichen Repository (siehe unten).
2. Installieren Sie Incus mit dem Kommando `sudo apt-get --no-install-recommends --no-install-suggests install incus`.&#x20;
3. Nach der Installation initialisieren Sie Incus mit dem Kommando `sudo incus admin init --minimal`. Prüfen Sie anschließend mit dem Kommando `ip a`, ob das Netzwerkgerät `incusbr0` erzeugt wurde.&#x20;
   {% endtab %}

{% tab title="SUSE" %}
Für SuSE gibt es (noch) keine Incus Pakete. Weichen Sie auf den Incus-Vorgänger LXD aus. Installieren Sie LCD mit den folgenden Kommandos.

```
sudo zypper in --no-recommends lxd attr
sudo usermod -aG lxd $USER
sudo systemctl enable --now lxd
sudo lxd init --storage-backend dir --auto
```

{% hint style="warning" %}
Achten Sie auf die Zypper-Option `--no-recommends`. Anderfalls wird aufgrund zahlreicher "Empfehlungen" ein Gnome-Desktop installiert.
{% endhint %}
{% endtab %}

{% tab title="Debian 12" %}

Melden Sie sich als Root-User am System an.

1. Debian Systeme brauchen ein zusätzlichen Repository (siehe unten).
2. Installieren Sie Incus mit dem Kommando `sudo apt-get --no-install-recommends --no-install-suggests install incus`.&#x20;
3. Nach der Installation initialisieren Sie Incus mit dem Kommando `sudo incus admin init --minimal`. Prüfen Sie anschließend mit dem Kommando `ip a`, ob das Netzwerkgerät `incusbr0` erzeugt wurde.&#x20;
   {% endtab %}
   {% endtabs %}

#### Incus Debian/Ubuntu Repository einbinden

```
cat <<"EOF"|sudo bash
curl -fsSL https://pkgs.zabbly.com/key.asc | gpg --show-keys --fingerprint
mkdir -p /etc/apt/keyrings/
curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc
echo "Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/incus/stable
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc
"> /etc/apt/sources.list.d/zabbly-incus-stable.sources
EOF
```

### Warum so viele Namen für das Gleiche?

* Linux-Container (LXC) sind leichtgewichtige Virtualisierungsumgebungen, die Prozesse isolieren, indem sie Kernel-Namespaces und cgroups nutzen.&#x20;
* **LXC** ist die ursprüngliche Container-Implementierung unter Linux, die eine API und Tools für Container-Management bereitstellt.&#x20;
* **LXD**, ein Projekt von Canonical, baut auf LXC auf und bietet eine daemon-basierte Verwaltung mit zusätzlichen Funktionen wie Images und Clustering.&#x20;
* **Incus** ist ein Fork von LXD, der entstand, nachdem Canonical den Fokus von LXD verschoben hatte. Incus wird aktuell bevorzugt, da es unabhängig und aktiv von der Community gepflegt wird, was Stabilität und langfristige Unterstützung gewährleistet.

### Container erzeugen und nutzen

Neuen Container mit Ubuntu 24.04 anlegen und starten: \
`incus launch images:ubuntu/noble una`

Laufende Container anzeigen: \
`incus ls`

Am Container anmelden: \
`incus exec <CONTAINER_NAME> -- bash`

Verfügbare Container Images anzeigen:\
`incus image list images: type=container`

Weitere Container anlegen

```
incus launch images:debian/12 delia
incus launch images:rockylinux/9 ruby
incus launch images:opensuse/15.6 susan
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://thorstenkramm.gitbook.io/saltstack/testumgebung.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
