provision-hetzner · git:20260526.316de1d · 2026-05-26 · sha256 892f54d58d3d8e87
provision-hetzner git:20260526.316de1dA
Immutable. This exact content is served forever at /api/v1/blob/892f54d58d3d8e87.
--- name: provision-hetzner description: "This skill should be used when provisioning Hetzner sub-projects and tokens for tenant infrastructure." --- # Provision Hetzner Guide the operator through Hetzner Console project creation, accept a project-scoped API token, and run a write-class smoke-test to verify scope. ## Art. 32 Pre-condition **MUST run on the operator's local machine. MUST NOT run in CI.** The Hetzner token is accepted via `read -s` (interactive terminal only) and never persisted to disk, env exports, or CLI args. ## Usage ``` soleur:provision-hetzner <tenant-slug> [--dry-run] ``` | Argument | Required | Description | |----------|----------|-------------| | `tenant-slug` | Yes | Canonical tenant identifier (kebab-case) | | `--dry-run` | No | Print Console guidance + smoke-test commands without executing | ## Execution ```bash bash plugins/soleur/skills/provision-hetzner/scripts/provision-hetzner.sh <slug> [--dry-run] ``` The script: 1. Validates prerequisites (DPA gate, slug format, `hcloud` CLI) 2. Displays guided instructions for Console project creation + token minting 3. Accepts token via `read -s` and runs write-class smoke-test (create + delete cx11) 4. Uses deterministic probe name (`probe-provision-<slug>`) so orphans are findable 5. Trap handler ensures probe server cleanup on EXIT/INT/TERM 6. Prints teardown commands on any exit ## Sharp Edges - Hetzner has no TF resource for project creation or token minting (Console-only). - The smoke-test creates a real cx11 server (~EUR 0.006/hr prorated). Trap handler cleans up. - If `hcloud server delete` fails, the probe server must be deleted manually via Console. - Read-only tokens silently succeed for reads; the write-class test (server create) is essential.