feat: add YAML validation for cloud-init scripts

Add ValidCloudInitYaml validation rule to ensure cloud-init scripts
are properly formatted before saving. The validator supports:
- Cloud-config YAML (with or without #cloud-config header)
- Bash scripts (starting with #!)
- Empty/null values (optional field)

Uses Symfony YAML parser to validate YAML syntax and provides
detailed error messages when validation fails.

Added comprehensive unit tests covering:
- Valid cloud-config with/without header
- Valid bash scripts
- Invalid YAML syntax detection
- Complex multi-section cloud-config

Applied validation to:
- ByHetzner component (server creation)
- CloudInitScriptForm component (script management)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai
2025-10-11 13:56:55 +02:00
parent a3cecff97b
commit d93a13eeee
5 changed files with 232 additions and 3 deletions

View File

@@ -2,7 +2,7 @@
<x-forms.input id="name" label="Script Name" helper="A descriptive name for this cloud-init script." required />
<x-forms.textarea id="script" label="Script Content" rows="12"
helper="Enter your cloud-init script. Supports both bash scripts and cloud-config YAML format." required />
helper="Enter your cloud-init script. Supports cloud-config YAML format." required />
<div class="flex justify-end gap-2">
@if ($modal_mode)