Files
maas-proxmox/overlay/etc/systemd/system/pve-maas-init.service
ilkermanap 40b5d50ec9 License under AGPL-3.0-or-later and publish documentation via GitHub Pages
Parts of this repository are derived from canonical/packer-maas, which Canonical
distributes under the AGPLv3, so its copyleft carries over and a permissive or
plain-GPL licence is not available:

  * maas/curtin_userdata_custom.in is adapted from upstream's
    debian/curtin_userdata_custom_amd64, with several late_commands copied
    verbatim (the PXE-disable call, the target bind mount, the cloud.cfg rewrite
    and the zz-update-grub fix)
  * overlay/curtin/curtin-hooks follows upstream's debian/scripts/curtin-hooks:
    same imports, same load_command_environment -> load_command_config ->
    builtin_curthooks -> cleanup structure, near-identical cleanup(). The
    kernel-disabling and interface-pinning functions are original.

The upstream template itself is not vendored; it is cloned at build time and
pinned by PM_REF.

Adds the full AGPL-3.0 text as LICENSE and SPDX-License-Identifier headers to
every source file, placed after the shebang or the #cloud-config marker so both
keep working. deploy-cluster.sh's --help filters the new header lines out of the
usage text it extracts from its own comment block.

GitHub Pages serves index.md, which includes README.md, so the site cannot drift
from the repository documentation. Nothing but build/ is excluded, which keeps
the README's relative links to LICENSE, scripts/ and maas/examples/ resolving on
the published site.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-04 21:57:03 +02:00

48 lines
1.8 KiB
Desktop File

# Copyright (C) 2026 Ilker Manap
# SPDX-License-Identifier: AGPL-3.0-or-later
[Unit]
Description=Proxmox VE post-deployment configuration for MAAS
Documentation=file:/etc/pve-maas/pve-maas.conf
After=network-online.target
Wants=network-online.target
ConditionPathExists=!/var/lib/pve-maas/complete
# DIKKAT - burada cloud-init servislerine "After=" YAZMAYIN.
#
# After=cloud-final.service + WantedBy=multi-user.target birlesimi bu imajda
# siralama dongusu olusturuyor ve systemd dongoyu kirmak icin BU servisin
# baslatma isini siliyor:
#
# multi-user.target: Found ordering cycle on pve-maas-init.service/start
# multi-user.target: Found dependency on cloud-final.service/start
# multi-user.target: Found dependency on multi-user.target/start
# Job pve-maas-init.service/start deleted to break ordering cycle
#
# Bunun yerine script kendi icinde "cloud-init status --wait" ile bekliyor;
# boylece hem conf.d dosyalari yazilmis oluyor hem de MAAS deploy sinyalini
# almis oluyor, systemd bagimlilik grafigine dokunmadan.
[Service]
# Type=simple (oneshot DEGIL) - bu onemli.
#
# Type=oneshot ile servis bitene kadar multi-user.target ulasilmis sayilmiyor.
# cloud-final.service ise "After=multi-user.target" ile siralanmis. Script
# icinde cloud-init'i bekledigimiz icin bu bir kilitlenme uretiyordu:
#
# cloud-final.service waiting (multi-user.target bekliyor)
# pve-maas-init.service running (cloud-init bekliyor)
# multi-user.target waiting (pve-maas-init bekliyor)
#
# Type=simple ile servis hemen "basladi" sayilir, multi-user.target acilir,
# cloud-final calisir ve beklememiz doner. Asama takibi zaten
# /var/lib/pve-maas/*.done dosyalariyla yapiliyor.
Type=simple
ExecStart=/usr/local/sbin/pve-maas-init
TimeoutStartSec=0
StandardOutput=journal+console
StandardError=journal+console
[Install]
WantedBy=multi-user.target