add ServiceRadar remote-access enrollment collection #1

Merged
gitea_admin merged 29 commits from feat/serviceradar-remote-access-enrollment into main 2026-07-14 23:19:58 +00:00
Owner

Adds reusable, public Ansible content for ServiceRadar remote-access enrollment without publishing deployment-specific CA material or credentials.

  • staged Linux OpenSSH user-CA preflight, install, verification, commit, overlap/retirement, removal, and rollback flows
  • private ServiceRadar API/callback contract for obtaining per-execution trust material through attenuated short-lived authority
  • reviewed AWX wrapper/catalog metadata that keeps direct wrappers and unverified content production-gated
  • Windows QEMU guest-agent preflight and installation over PSRP/WinRM
  • Proxmox inventory and relay-credential integration content
  • hash-locked CI dependencies, repository/private-material checks, syntax gates, ansible-lint production profile, collection build provenance, and Molecule scenarios

Local verification is green: 8 repository tests, YAML/Ansible lint with zero failures or warnings, every wrapper syntax check, collection dependency install/build, and Windows QGA Molecule syntax.

Remaining before this leaves draft: provision and validate the approved dedicated repository-scoped ephemeral public runner (the current versioned label has no registered runner); complete ServiceRadar callback/AWX rollout; run ServiceRadar-originated Linux and Windows canaries; and record pull-request review. Production import remains explicitly disabled until those gates pass.

Adds reusable, public Ansible content for ServiceRadar remote-access enrollment without publishing deployment-specific CA material or credentials. - staged Linux OpenSSH user-CA preflight, install, verification, commit, overlap/retirement, removal, and rollback flows - private ServiceRadar API/callback contract for obtaining per-execution trust material through attenuated short-lived authority - reviewed AWX wrapper/catalog metadata that keeps direct wrappers and unverified content production-gated - Windows QEMU guest-agent preflight and installation over PSRP/WinRM - Proxmox inventory and relay-credential integration content - hash-locked CI dependencies, repository/private-material checks, syntax gates, ansible-lint production profile, collection build provenance, and Molecule scenarios Local verification is green: 8 repository tests, YAML/Ansible lint with zero failures or warnings, every wrapper syntax check, collection dependency install/build, and Windows QGA Molecule syntax. Remaining before this leaves draft: provision and validate the approved dedicated repository-scoped ephemeral public runner (the current versioned label has no registered runner); complete ServiceRadar callback/AWX rollout; run ServiceRadar-originated Linux and Windows canaries; and record pull-request review. Production import remains explicitly disabled until those gates pass.
test: enforce reproducible Ansible quality gates
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Has been cancelled
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
05d931ce7a
ci: use available disposable runner pool
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Failing after 9s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Failing after 10s
dafbbb3f96
ci: run quality jobs in provisioned worker image
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Failing after 2s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Failing after 2s
991647699d
ci: isolate locked Python dependencies
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Failing after 9s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Failing after 9s
3c4bd7f625
fix(ci): resolve lock for Python 3.12
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 41s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Failing after 40s
6cd60a737a
feat(callback): bind retries to idempotency key
Some checks failed
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Failing after 16s
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 38s
d9771fd4be
ci: isolate real SSH fixture matrix
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 40s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
5311c8618a
fix(callback): allow bounded AWX activation retries
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 36s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
9d3f5f85e5
fix(callback): bind CA response to AWX runtime job
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 1m53s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
178353dcf0
fix(callback): materialize exact AWX host scope
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 39s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
648d3f24f4
fix(ansible): pin mounted QGA installer digest
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 46s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
3875e686d0
fix(ansible): support pinned unsigned VirtIO QGA MSI
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 54s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
5c0534b79b
feat(ansible): pin Windows AWX execution environment
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 48s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
92bbe074ab
fix(ansible): validate Windows MSI paths at runtime
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 49s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
2b16a98f94
fix(ansible): align Windows role with AWX runtime
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 1m13s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
bfc0991c66
fix(ansible): make callback contract bytes canonical
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 49s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
ba8e0631d6
feat(ansible): add pinned Linux CA trust role
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 54s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
73941a8117
feat(ansible): add verified Proxmox inventory contract
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 50s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
cb28311639
build(ansible): pin Proxmox inventory collection
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 1m14s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
a79ba499d5
feat(ansible): add verified Proxmox relay credential
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 1m8s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
b5e60caad2
docs(ansible): clarify trusted callback prompts
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Successful in 2m12s
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
5cacaf7186
gitea_admin changed title from WIP: add gated ServiceRadar SSH CA enrollment collection to WIP: add ServiceRadar remote-access enrollment collection 2026-07-14 05:36:03 +00:00
ci: bind quality jobs to isolated public runner
Some checks failed
remote-access-content-quality / lint-and-syntax (pull_request) Has been cancelled
remote-access-content-quality / molecule-systemd-sshd (preflight) (pull_request) Has been cancelled
0875202719
Author
Owner

Runner-contract update (0875202): both lint and Molecule now request only serviceradar-public-ephemeral-ubuntu-24.04-20260701. Each job fail-closes on the repo-85 boundary identity supplied by the one-job LXC supervisor, rejects Kubernetes/host-DinD/signing credential exposure, keeps checkout credentials disabled and repository permissions read-only, and records non-secret source/dependency/runner provenance (plus the four pinned Molecule image digests).

Local locked verification is green: 8 tests, repository contract checks, yamllint, production-profile ansible-lint (0 failures/warnings), all wrapper syntax checks, Windows path contract, and Windows QGA Molecule syntax.

This PR intentionally remains draft. The new jobs may remain queued until the separate GitOps implementation provisions and validates the repository-85-scoped ephemeral runner; no generic or trusted runner fallback should be added.

Runner-contract update (`0875202`): both lint and Molecule now request only `serviceradar-public-ephemeral-ubuntu-24.04-20260701`. Each job fail-closes on the repo-85 boundary identity supplied by the one-job LXC supervisor, rejects Kubernetes/host-DinD/signing credential exposure, keeps checkout credentials disabled and repository permissions read-only, and records non-secret source/dependency/runner provenance (plus the four pinned Molecule image digests). Local locked verification is green: 8 tests, repository contract checks, yamllint, production-profile ansible-lint (0 failures/warnings), all wrapper syntax checks, Windows path contract, and Windows QGA Molecule syntax. This PR intentionally remains draft. The new jobs may remain queued until the separate GitOps implementation provisions and validates the repository-85-scoped ephemeral runner; no generic or trusted runner fallback should be added.
gitea_admin changed title from WIP: add ServiceRadar remote-access enrollment collection to add ServiceRadar remote-access enrollment collection 2026-07-14 23:19:57 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
carverauto/serviceradar-ansible!1
No description provided.