feat(ansible): steward:category + steward:confirm playbook metadata
CI / lint (push) Successful in 2s
CI / unit (push) Successful in 8s
CI / integration (push) Successful in 2m14s
CI / publish (push) Successful in 59s

Extend the playbook metadata convention with a namespaced `# steward:<key>:`
comment block:

- steward:category — free-text grouping label, shown as a badge in the browse
  list and on the run form.
- steward:confirm — true/yes/1/on marks a playbook destructive; the run form
  then requires a confirmation tick (required checkbox in the shared vars
  fragment) before it can launch.

sources.discover_playbook_meta() parses description + category + confirm (first
match per key; `# description:` still primary, `# steward:description:` alias).
discover_playbook_description() now delegates to it. The browse list reads
per-playbook meta to show category badges + descriptions; the run-form and
playbook-vars fragments render the badge + confirm gate.

Bundled playbooks tagged: docker_prune → category maintenance + confirm true;
provision/install/update → category host-agent.

Docs: docs/reference/playbook-authoring.md updated (keys now implemented) and a
quick reference added next to the code at steward/ansible/PLAYBOOK_CONVENTIONS.md.
Tests added for category/confirm/alias parsing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-17 11:35:35 -04:00
parent b32fce1d74
commit 42f7840c26
11 changed files with 192 additions and 39 deletions
@@ -1,5 +1,6 @@
---
# description: Install or re-enroll the Steward host agent on an already-provisioned host.
# steward:category: host-agent
# Install (or update) the Steward host agent on a target. Mirrors the
# curl-based install.sh. Pass the per-host registration token as extra-vars:
# steward_url=https://steward.example steward_token=<token from Host Agents>
@@ -1,5 +1,6 @@
---
# description: Provision a fresh host — create the steward account + managed key + passwordless sudo, then install the agent.
# steward:category: host-agent
# First-contact provisioning: bring a fresh host under Steward management, then
# install the host agent — all in one idempotent run.
#
@@ -1,5 +1,6 @@
---
# description: Update the Steward host agent (refresh agent.py + restart) on hosts already running it.
# steward:category: host-agent
# Update an already-installed Steward host agent: refresh agent.py and restart.
#
# Deliberately does NOT touch the registration token or /etc/steward-agent.conf