No description
  • Shell 86.3%
  • HTML 13.7%
Find a file
Kevin Heyer 778a19e89e
All checks were successful
/ lint (push) Successful in 15s
iac-example: Beispiel-App zum Lernen
busybox httpd mit einer Seite auf Port 8080 (nur private Netze), eigener
Nutzer und Unit; jeder Hook von iac-core kommt einmal vor. Nur LXC, kein
VM-Image; "hidden": true hält die App von der Website fern.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 09:58:51 +02:00
.forgejo/workflows iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
rootfs iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
tests iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
adopt.sh iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
app.func iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
CHANGELOG.md iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
ct.sh iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
iac.json iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
packages.list iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
README.md iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00
rootfs.perms iac-example: Beispiel-App zum Lernen 2026-10-09 09:58:51 +02:00

iac-example

Eine absichtlich kleine, aber vollständige iac-App zum Lernen: busybox httpd liefert eine statische Seite auf Port 8080 aus, als eigener Systemnutzer, nur aus privaten Netzen erreichbar. Jeder Hook, den iac-core kennt, kommt genau einmal vor. Die App ist in der iac.json mit "hidden": true markiert und erscheint deshalb nicht auf der Website.

Die ausführliche Anleitung steht auf https://iac.heyer.systems/eigene-app/.

In dieser Reihenfolge lesen

# Datei Worum es geht
1 iac.json Name, Ressourcen, Plattformen, Ports (daraus entsteht die Firewall)
2 packages.list Debian-Pakete – die einzige Paketliste für LXC, Image und Adopt
3 rootfs/ Dateien, wie sie im Gast landen: systemd-Unit, Standardseite, README
4 rootfs.perms Rechte, die vom Standard abweichen
5 app.func die Hooks – Kopfkommentar zeigt, wer wann was aufruft
6 tests/smoke.sh Prüfungen nur für diese App
7 ct.sh, adopt.sh Einstiege – identisch für alle Apps, nur IAC_APP ändert sich
8 .forgejo/workflows/ Lint – unverändert aus iac-core/templates/app/

Das Beispiel gibt es nur als LXC: Ein VM-Image würde bei jedem Push und jede Woche gebaut. Wie VM-Apps aussehen (vm.sh, image/manifest.yml, image.yml), zeigen iac-nginx und iac-traefik – die Dateien kommen unverändert aus iac-core/templates/app/.

Ausprobieren

Ohne Proxmox, in einem Docker-Container mit systemd (auf dem eigenen Rechner):

../iac-core/tools/dev-container.sh .        # installiert die App und führt den Smoke-Test aus
docker exec -it iac-dev-example bash        # hineinschauen

Auf einer Proxmox-Node:

bash -c "$(curl -fsSL https://iac.heyer.systems/example/ct.sh)"

Im Gast:

curl http://127.0.0.1:8080/                      # die Seite
bash /var/lib/iac/src/core/bin/iac-smoke         # dasselbe wie der Boot-Test
echo '<h1>iac-example: meine Seite</h1>' > /etc/iac-example/index.html
update                                           # eigene Seite wird übernommen