Sieben Wege, um aus einem Linux- oder Windows-Runner heraus den
"Rechner ist ausgerollt"-Status aus Microsoft Configuration Manager
(offiziell ConfigMgr / informell weiter SCCM oder MECM) zu lesen
und OpenTofu darauf warten zu lassen.
Naming-Hinweis: Der Repo-Slug enthält aus historischen Gründen noch
mecm. Inhaltlich/dokumentarisch ist alles auf den aktuellen Produktnamen ConfigMgr umgestellt. Kontext zur Namenshistorie indocs/configmgr-versions.md.
OVERVIEW.md— Entscheidungsbaum, Vergleichsmatrix, Flussdiagramme pro Variantedocs/adminservice.md— Architektur, URLs, Auth und Nutzung des ConfigMgr AdminServicedocs/configmgr-versions.md— Naming-Historie, Versions-Schema, Release-Cadence, Stand 2026, Detektiondocs/compatibility-2026.md— Kompatibilitäts- Check der Wege gegen aktuelle ConfigMgr-Versionen (2503/2509/2603)docs/auth-setup.md— Konkretes Auth-Kochbuch: Service-Account, RBAC-Rolle, Keytab, krb5/CA-Trust auf Linux, Smoke-Testsdocs/troubleshooting.md— Diagnose-Hinweise zu Auth, ConfigMgr, Tofu und Skript-Problemen mit Diagnose-Befehlendocs/glossary.md— Quick-Lookup für ConfigMgr-/Auth-/OData-Begriffe (für Tofu-Engineers ohne MECM-Background)examples/basic-wait— minimales Tofu-Beispiel, das eine der Varianten als Modul einbindetexamples/full-vm-rollout— End-to-End-Pipeline: VM-Provisioning → ConfigMgr-Wait → parallele Folge-Tasks (DNS, Monitoring, CMDB) → Final-Notification
| # | Ordner | Origin | Stack | PS 5.1 ausführbar |
Stärke | Schwäche |
|---|---|---|---|---|---|---|
| 01 | 01-adminservice-pwsh-linux |
Linux | pwsh 7 + AdminService REST | n/a | Sauber, JSON-nativ, supported | pwsh-Dependency, Kerberos-Setup |
| 02 | 02-adminservice-pwsh-windows |
Windows | PS 5.1 + AdminService REST | ja | Kein Kerberos-Setup, PS 5.1 built-in | Origin muss Windows sein |
| 03 | 03-adminservice-bash-linux |
Linux | curl + jq + AdminService REST | n/a | Keine pwsh-Dependency, minimaler Footprint | Mehr Bash-Glue, Linux-only |
| 04 | 04-winrm-jumphost |
Linux | pwsh 7 → WinRM → Windows + Console | nein (Hop: ja) | Voller Cmdlet-Zugriff, kein AdminService nötig | Zwei-Hop, mehr Moving Parts |
| 05 | 05-sql-direct-linux |
Linux | sqlcmd gegen CM-DB Views | n/a | Schnellste Queries, beste Joins | DBA-Approval, brittler bei Upgrades |
| 06 | 06-sql-direct-windows |
Windows | PS 5.1 + Invoke-Sqlcmd |
ja | Kein Kerberos-Setup, schnelle Queries | DBA-Approval, Origin muss Windows sein |
| 07 | 07-cmdlets-package |
Linux | pwsh 7 → WinRM → Windows + Cmdlet-Package | nein (Win: ja) | Voller Cmdlet-Zugriff, kein Console-Install | Package-Pflege manuell, semi-offiziell |
PS 5.1 ausführbar: n/a = läuft auf Linux (PS 5.1 gibt es nur auf Windows).
Alle Skripte prüfen per Default zwei Bedingungen:
- Task Sequence erfolgreich — letzte TS-Deployment-Execution für den Rechner endet mit Success-Status (StatusType=5 / MessageID 11171).
- Client aktiv —
SMS_R_System.Client = 1und letztes Heartbeat innerhalb Toleranz.
Anpassen je nach Rollout-Definition (z.B. zusätzlich Pflicht-Apps compliant).
Standardpattern in jedem Ordner:
resource "null_resource" "wait_for_configmgr" {
triggers = { computer_name = var.computer_name }
provisioner "local-exec" {
command = "./wait-configmgr-deployed.sh ${var.computer_name}"
}
}
resource "next_thing" "x" {
depends_on = [null_resource.wait_for_configmgr]
# ...
}Script blockiert bis Status erreicht oder Timeout — Tofu wartet entsprechend.