#cloud-config
# Ersteinrichtung des Grund-Abbilds nach ADR-0004.
#
# Das Plattenbild ist der Kern dieser Datei. Es teilt den Datentraeger so auf, dass ein
# Fassungswechsel nur eine der beiden Wurzeln beschreibt und der Bestandsbereich davon
# unberuehrt bleibt — das ist der Grund, warum die vorgehaltene Vorgaengerfassung 40 GB
# kostet und nicht ueber 100.
autoinstall:
  version: 1
  locale: de_DE.UTF-8
  keyboard:
    layout: de
  storage:
    config:
      - {id: platte, type: disk, ptable: gpt, wipe: superblock-recursive, preserve: false, grub_device: false, match: {size: largest}}

      # EFI-Startbereich. Bewusst 1 GB statt der ueblichen 512 MB: systemd-boat liest keine
      # Linux-Dateisysteme, also liegen hier ZWEI Saetze aus Kern und Startabbild (ADR-0011).
      - {id: p-efi, type: partition, device: platte, size: 1G, flag: boot, grub_device: true}
      - {id: fs-efi, type: format, volume: p-efi, fstype: fat32, label: EFI}
      - {id: m-efi, type: mount, device: fs-efi, path: /boot/efi}

      - {id: p-wurzel-a, type: partition, device: platte, size: 40G}
      - {id: fs-wurzel-a, type: format, volume: p-wurzel-a, fstype: ext4, label: wurzel-a}
      - {id: m-wurzel-a, type: mount, device: fs-wurzel-a, path: /}

      # Wurzel B wird bei der Ersteinrichtung angelegt, aber nicht eingehaengt. Sie ist das
      # Ziel des ersten Fassungswechsels.
      - {id: p-wurzel-b, type: partition, device: platte, size: 40G}
      - {id: fs-wurzel-b, type: format, volume: p-wurzel-b, fstype: ext4, label: wurzel-b}

      # Bestand: Modelle, Wissensspeicher, Zustandsdatenbank, Vektorindex, Tresor, Protokolle.
      # Wird bei einem Fassungswechsel NICHT getauscht und ueberlebt den Ruecksprung.
      - {id: p-bestand, type: partition, device: platte, size: -1}
      - {id: fs-bestand, type: format, volume: p-bestand, fstype: ext4, label: bestand}
      - {id: m-bestand, type: mount, device: fs-bestand, path: /bestand}

  packages:
    - systemd-boot
    - python3
    - python3-venv

  # Die Schnappschuss-Pakete werden stillgelegt: ihr Dienst sucht selbsttaetig nach
  # Aktualisierungen und wuerde damit am Updatekanal, an der Signaturpruefung und am
  # Ruecksprung vorbei arbeiten (ADR-0004).
  late-commands:
    # Die Wurzel-Auflage: Selbstprueflauf, Wurzel-Auskunft und die Units des Dienstes.
    - cp -a /cdrom/xinionos/wurzel/. /target/
    - curtin in-target -- systemctl enable xinionos-selbstpruefung.service
    - curtin in-target -- systemctl enable xinionos-status.service

    # Startverwalter nach ADR-0011. bootctl legt systemd-boot auf den EFI-Bereich; die
    # Starteintraege mit Zaehler entstehen beim Fassungswechsel, nicht hier.
    - curtin in-target -- bootctl install --graceful

    # Die Schnappschuss-Pakete werden stillgelegt: ihr Dienst sucht selbsttaetig nach
    # Aktualisierungen und wuerde damit am Updatekanal, an der Signaturpruefung und am
    # Ruecksprung vorbei arbeiten (ADR-0004).
    - curtin in-target -- systemctl mask snapd.service snapd.socket snapd.seeded.service || true
    - curtin in-target -- apt-get -y purge snapd || true
