Separate local preparation from deployment prerequisites
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Feature 0016: Deploy the D&D Pipeline to `pipeline-dnd`
|
# Feature 0016: Deploy the D&D Pipeline to `pipeline-dnd`
|
||||||
|
|
||||||
Status: blocked
|
Status: ready
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
@@ -193,8 +193,11 @@ immediate identical Ansible run reports no changes.
|
|||||||
|
|
||||||
## Operational Prerequisites
|
## Operational Prerequisites
|
||||||
|
|
||||||
Before implementation, establish the concrete deployment context and record
|
Local repository preparation and syntax/dependency checks can proceed with the
|
||||||
the non-secret choices in the implementation plan or deployment runbook:
|
workspace's existing Ansible virtual environment. Before live deployment,
|
||||||
|
establish the controller, target access, and Vault details below. Select the
|
||||||
|
session/audio before the end-to-end exercise, not before local implementation.
|
||||||
|
Record non-secret choices in the implementation plan or deployment runbook:
|
||||||
|
|
||||||
- Identify the operational Ansible controller and its deployment checkout.
|
- Identify the operational Ansible controller and its deployment checkout.
|
||||||
The repository configuration currently selects `/etc/ansible/inventory`,
|
The repository configuration currently selects `/etc/ansible/inventory`,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Implementation Plan 0016: Deploy the D&D Pipeline to `pipeline-dnd`
|
# Implementation Plan 0016: Deploy the D&D Pipeline to `pipeline-dnd`
|
||||||
|
|
||||||
Status: blocked
|
Status: ready
|
||||||
|
|
||||||
Target executor: GPT-5.6-Terra
|
Target executor: GPT-5.6-Terra
|
||||||
|
|
||||||
@@ -31,6 +31,17 @@ scope, rationale, target state, and acceptance criteria.
|
|||||||
Do not solicit secrets in chat or create placeholder credentials.
|
Do not solicit secrets in chat or create placeholder credentials.
|
||||||
- Stop dependent work when operational inputs are missing or validation fails.
|
- Stop dependent work when operational inputs are missing or validation fails.
|
||||||
Record the concrete blocker; local checks do not prove a live deployment.
|
Record the concrete blocker; local checks do not prove a live deployment.
|
||||||
|
- Scope blockers to the operation that requires the missing input. Complete
|
||||||
|
Stages 1–2 locally without remote SSH, production Vault values, or an
|
||||||
|
acceptance session. Controller/SSH/Vault inputs gate Stage 3; session and
|
||||||
|
audio selection gate Stage 4. Continue independent authorized preparation.
|
||||||
|
- A missing executable on `PATH` is not proof that tooling is uninstalled.
|
||||||
|
Check the workspace `.venv/bin` and repository test drivers before reporting
|
||||||
|
a missing dependency. Use the verified executable path in diagnostics.
|
||||||
|
- An Ansible controller is the environment running Ansible; it requires no
|
||||||
|
controller daemon or `/etc/ansible` directory. Use explicit configuration,
|
||||||
|
inventory, role, and collection paths for local checks. Do not recreate the
|
||||||
|
operational controller layout or install system-wide tooling for that purpose.
|
||||||
- Retain the historical playbook and proof-of-concept role. Role, collection,
|
- Retain the historical playbook and proof-of-concept role. Role, collection,
|
||||||
application, and asset repositories remain read-only during this feature.
|
application, and asset repositories remain read-only during this feature.
|
||||||
- Deployment and paid provider execution occur only during the approved sprint
|
- Deployment and paid provider execution occur only during the approved sprint
|
||||||
@@ -54,9 +65,13 @@ scope, rationale, target state, and acceptance criteria.
|
|||||||
and S3 variables to migrate.
|
and S3 variables to migrate.
|
||||||
- The selected collection still declares version `0.1.0`. An installed
|
- The selected collection still declares version `0.1.0`. An installed
|
||||||
release with that number is not sufficient evidence of the selected content.
|
release with that number is not sufficient evidence of the selected content.
|
||||||
- Approve and commit the planning documents before execution. Resolve the
|
- This plan is approved, with this revision permitting local preparation before
|
||||||
operational inputs under Open Questions before the sprint, as required by
|
operational inputs are resolved. Do not invent those inputs; resolve them
|
||||||
the roadmap; do not invent controller topology, credentials, or session data.
|
at the stage that needs them.
|
||||||
|
- Local tooling is already installed and verified: Ansible Core 2.21.3 in
|
||||||
|
`/home/eric/Workspace/ansible-dnd/.venv`. Use its `bin/ansible`,
|
||||||
|
`bin/ansible-playbook`, `bin/ansible-galaxy`, and `bin/ansible-doc`, or prepend
|
||||||
|
that `bin` directory to `PATH`. No activation is required for absolute paths.
|
||||||
|
|
||||||
## Repository Scope
|
## Repository Scope
|
||||||
|
|
||||||
@@ -65,11 +80,11 @@ scope, rationale, target state, and acceptance criteria.
|
|||||||
- Workspace: feature status, implementation progress, and review handoff.
|
- Workspace: feature status, implementation progress, and review handoff.
|
||||||
- Other repositories: read-only compatibility and application references.
|
- Other repositories: read-only compatibility and application references.
|
||||||
|
|
||||||
## Stage 1: Establish the Operational Context
|
## Stage 1: Establish Local Preparation and Record Deployment Inputs
|
||||||
|
|
||||||
### Objective and Owning Repository
|
### Objective and Owning Repository
|
||||||
|
|
||||||
Record deployment prerequisites in `rakestraw-ansible` and close the reviewed
|
Record known and pending deployment inputs in `rakestraw-ansible` and close the reviewed
|
||||||
Feature 0015 in the workspace.
|
Feature 0015 in the workspace.
|
||||||
|
|
||||||
### Required Policy Review
|
### Required Policy Review
|
||||||
@@ -80,23 +95,24 @@ roadmap, and `rakestraw-ansible/README.md` before this stage.
|
|||||||
|
|
||||||
### Preconditions
|
### Preconditions
|
||||||
|
|
||||||
The plan is approved, repositories have been checked, and the operator has
|
The plan is approved and repositories have been checked. Local tooling is
|
||||||
supplied the missing operational inputs below.
|
available; no remote access or credential/session input is required.
|
||||||
|
|
||||||
### Required Changes
|
### Required Changes
|
||||||
|
|
||||||
1. Create `rakestraw-ansible/docs/pipeline-dnd.md` and link it from README.
|
1. Create `rakestraw-ansible/docs/pipeline-dnd.md` and link it from README.
|
||||||
Record the actual controller, checkout, effective Ansible configuration,
|
Record the local validation setup and known operational details. List the
|
||||||
inventory, role/collection paths, Vault selection method, and acceptance
|
operational controller/checkout, effective paths, Vault selection, and
|
||||||
campaign/session/audio location. Record only non-secret information.
|
acceptance session as pending where unknown, with their consuming stage.
|
||||||
2. Confirm controller Ansible Core is at least 2.18 and the public suite
|
Do not fabricate completed checks or turn missing values into blockers here.
|
||||||
|
2. Confirm local Ansible Core is at least 2.18 and the public suite
|
||||||
repositories and Galaxy are reachable. Inspect effective configuration
|
repositories and Galaxy are reachable. Inspect effective configuration
|
||||||
without dumping decrypted host variables. Existing repository defaults are
|
without dumping decrypted host variables. Existing repository defaults are
|
||||||
`/etc/ansible/inventory`, `/etc/ansible/roles`, and `/etc/ansible/collections`;
|
`/etc/ansible/inventory`, `/etc/ansible/roles`, and `/etc/ansible/collections`;
|
||||||
establish how the operational checkout supplies those paths.
|
document these as operational defaults, not required local directories.
|
||||||
3. Use ordinary read-only host checks to confirm Ubuntu 26.04 and the existing
|
3. Record the reported target SSH rejection as a Stage 3 prerequisite. Defer
|
||||||
`eric` account's SSH and required sudo access. Record the outcome. Report
|
target Ubuntu and sudo checks until authorized access is available. Repeated
|
||||||
discrepancies before deployment rather than changing platform/account policy.
|
attempts with the same rejected identity do not advance local preparation.
|
||||||
4. Mark Feature 0015 `done` in its roadmap and workspace status, citing its
|
4. Mark Feature 0015 `done` in its roadmap and workspace status, citing its
|
||||||
reviewed commits and the successful independent standalone/collection
|
reviewed commits and the successful independent standalone/collection
|
||||||
integration runs. Leave historical remediation records unchanged. Mark
|
integration runs. Leave historical remediation records unchanged. Mark
|
||||||
@@ -104,7 +120,8 @@ supplied the missing operational inputs below.
|
|||||||
|
|
||||||
### Validation and Completion Criteria
|
### Validation and Completion Criteria
|
||||||
|
|
||||||
Operational inputs are concrete and target platform/access checks pass.
|
Local tooling works and the runbook distinguishes known facts from pending
|
||||||
|
operational inputs, assigning each to Stage 3 or Stage 4.
|
||||||
Run `git diff --check` in both changed repositories. No deployment or provider
|
Run `git diff --check` in both changed repositories. No deployment or provider
|
||||||
request is necessary for this stage.
|
request is necessary for this stage.
|
||||||
|
|
||||||
@@ -128,8 +145,7 @@ Stage 1 runbook before this stage.
|
|||||||
|
|
||||||
### Preconditions
|
### Preconditions
|
||||||
|
|
||||||
Stage 1 is complete. The operator can populate and unlock the encrypted host
|
Stage 1 is complete. Production credentials and remote access are not required.
|
||||||
file using the recorded Vault mechanism.
|
|
||||||
|
|
||||||
### Required Changes
|
### Required Changes
|
||||||
|
|
||||||
@@ -143,9 +159,10 @@ file using the recorded Vault mechanism.
|
|||||||
`dnd_pipeline_secrets` mappings. Remove obsolete `narratio_s3_*` and
|
`dnd_pipeline_secrets` mappings. Remove obsolete `narratio_s3_*` and
|
||||||
`narratio_default_campaign_id` settings. Preserve unrelated intervening edits
|
`narratio_default_campaign_id` settings. Preserve unrelated intervening edits
|
||||||
and the separate connection file. Do not copy suite defaults into inventory.
|
and the separate connection file. Do not copy suite defaults into inventory.
|
||||||
3. Have the operator create `inventory/host_vars/pipeline-dnd/vault.yml`, fully
|
3. Document `inventory/host_vars/pipeline-dnd/vault.yml` and its four required
|
||||||
Ansible Vault-encrypted, defining the four exact `vault_dnd_*` names from
|
`vault_dnd_*` names. Keep the inventory references unresolved until the
|
||||||
the roadmap. Commit ciphertext only.
|
operator provisions that encrypted file in Stage 3. Do not create an empty
|
||||||
|
Vault file or substitute credentials to make local checks appear complete.
|
||||||
4. Pin the existing `rakestraw.dnd` Git entry in root `requirements.yml` to
|
4. Pin the existing `rakestraw.dnd` Git entry in root `requirements.yml` to
|
||||||
`46913446765e86ecfb29ebad9955d579ef6a4c7e` with its existing public URL.
|
`46913446765e86ecfb29ebad9955d579ef6a4c7e` with its existing public URL.
|
||||||
5. Copy the five `roles` entries from that collection's compatibility manifest,
|
5. Copy the five `roles` entries from that collection's compatibility manifest,
|
||||||
@@ -168,20 +185,29 @@ custom path that would skip the collection section of the mixed manifest.
|
|||||||
Confirm resolution with `ansible-doc -t role rakestraw.dnd.pipeline` and the
|
Confirm resolution with `ansible-doc -t role rakestraw.dnd.pipeline` and the
|
||||||
five `rakestraw.<app>` role names.
|
five `rakestraw.<app>` role names.
|
||||||
|
|
||||||
From the consumer checkout, using the established Vault options, run:
|
For local checks, use the workspace executables and the checked-out inventory.
|
||||||
|
Configure isolated role and collection paths explicitly. From the consumer
|
||||||
|
checkout, run:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
ansible-playbook -i inventory playbooks/pipeline/dnd.yml --limit pipeline-dnd --list-hosts
|
ansible-playbook -i inventory playbooks/pipeline/dnd.yml --limit pipeline-dnd --list-hosts
|
||||||
ansible-playbook -i inventory playbooks/pipeline/dnd.yml --limit pipeline-dnd --syntax-check
|
ansible-playbook -i inventory playbooks/pipeline/dnd.yml --limit pipeline-dnd --syntax-check
|
||||||
```
|
```
|
||||||
|
|
||||||
Use the concrete inventory path from Stage 1 if different. Do not impose
|
Host listing and syntax checking do not deploy or establish that credentials
|
||||||
|
resolve. Run them without evaluating or printing secret values; do not supply
|
||||||
|
fake Vault variables. If an existing unrelated encrypted inventory file needs
|
||||||
|
an unavailable password, preserve it and use a disposable local inventory with
|
||||||
|
only the target alias and its non-secret host variables for syntax checking.
|
||||||
|
Report that narrower scope explicitly; full encrypted-inventory validation
|
||||||
|
belongs to Stage 3. Do not change operational inventory to bypass encryption.
|
||||||
|
Do not impose
|
||||||
whole-repository lint changes on the established minimal-playbook style.
|
whole-repository lint changes on the established minimal-playbook style.
|
||||||
|
|
||||||
### Completion Criteria
|
### Completion Criteria
|
||||||
|
|
||||||
Only the intended host is selected. Public dependencies resolve without local
|
Only the intended host is selected. Public dependencies resolve without local
|
||||||
sibling checkouts, syntax checking succeeds with encrypted inventory, and the
|
sibling checkouts, local syntax checking succeeds within its recorded scope, and the
|
||||||
diff contains no plaintext secrets.
|
diff contains no plaintext secrets.
|
||||||
|
|
||||||
### Commit
|
### Commit
|
||||||
@@ -202,12 +228,22 @@ roadmap, and `rakestraw-ansible/docs/pipeline-dnd.md` before this stage.
|
|||||||
|
|
||||||
### Preconditions
|
### Preconditions
|
||||||
|
|
||||||
Stage 2 passed. The operational checkout contains its committed changes and
|
Stage 2 passed. The operational controller/checkout and delivery workflow are
|
||||||
Vault is usable. Deliver changes through the established checkout workflow;
|
identified, and target SSH access and the Vault mechanism are available.
|
||||||
do not overwrite a dirty operational checkout.
|
Deliver committed changes through that workflow without overwriting a dirty
|
||||||
|
checkout. Acceptance-session selection is not a prerequisite for this stage.
|
||||||
|
|
||||||
### Required Changes and Validation
|
### Required Changes and Validation
|
||||||
|
|
||||||
|
Before installation, confirm the operational controller's Ansible version and
|
||||||
|
effective inventory, role, and collection paths. Confirm Ubuntu 26.04 and the
|
||||||
|
existing `eric` account's required sudo access through read-only target checks.
|
||||||
|
Have the operator create `inventory/host_vars/pipeline-dnd/vault.yml` encrypted
|
||||||
|
in full, defining the four roadmap credential variables. Commit ciphertext
|
||||||
|
with intent `Add encrypted D&D host credentials` after checking the diff
|
||||||
|
exposes no plaintext. Rerun host listing and syntax validation with the real
|
||||||
|
encrypted inventory and recorded Vault options before convergence.
|
||||||
|
|
||||||
1. Install root requirements at the confirmed controller paths. Explicitly
|
1. Install root requirements at the confirmed controller paths. Explicitly
|
||||||
refresh only the D&D collection from its selected commit, even when `0.1.0`
|
refresh only the D&D collection from its selected commit, even when `0.1.0`
|
||||||
is already installed:
|
is already installed:
|
||||||
@@ -341,19 +377,20 @@ independent review.
|
|||||||
|
|
||||||
## Progress Notes
|
## Progress Notes
|
||||||
|
|
||||||
Execution began on 2026-09-21 but Stage 1 is blocked before any consumer or
|
The initial attempt stopped before consumer changes. Its report that Ansible
|
||||||
deployment change. The available `devbench-02.lxd` checkout is not the
|
was not installed was incorrect: workspace `.venv/bin/ansible` and
|
||||||
operational controller: Ansible is not installed and `/etc/ansible` does not
|
`.venv/bin/ansible-playbook` were verified as Core 2.21.3 on `devbench-02`.
|
||||||
exist. The public Gitea sources and Ansible Galaxy are reachable, but no
|
Stages 1–2 may now proceed locally. Public Gitea and Galaxy were reported
|
||||||
operational controller hostname or checkout workflow has been supplied. Direct
|
reachable. The reported rejected target SSH identity, missing operational
|
||||||
SSH to `pipeline-dnd.rakestrawhome.com` reaches the host but the available
|
controller details, and unavailable Vault workflow/values remain Stage 3
|
||||||
identity is rejected, so the Ubuntu release, `eric` access, and sudo access
|
prerequisites. The unselected acceptance session/audio remains a Stage 4
|
||||||
cannot be confirmed. The Vault selection mechanism and operator-populated
|
prerequisite. No stage or live deployment is complete.
|
||||||
credentials are unavailable, and no acceptance campaign/session/audio input
|
|
||||||
has been selected. No stage is complete and no dependent work has begun.
|
|
||||||
|
|
||||||
## Open Questions
|
## Open Questions
|
||||||
|
|
||||||
|
Questions 1–2 gate Stage 3 only. Question 3 gates Stage 4 only. None prevents
|
||||||
|
local preparation in Stages 1–2.
|
||||||
|
|
||||||
1. Which controller/checkout executes deployment and how do committed changes
|
1. Which controller/checkout executes deployment and how do committed changes
|
||||||
reach it? Recommended: use the existing operational controller and its
|
reach it? Recommended: use the existing operational controller and its
|
||||||
established `/etc/ansible/` layout, keeping one operational inventory.
|
established `/etc/ansible/` layout, keeping one operational inventory.
|
||||||
|
|||||||
@@ -4,11 +4,10 @@ Last updated: 2026-09-21
|
|||||||
|
|
||||||
Current milestone: Operational D&D pipeline deployment
|
Current milestone: Operational D&D pipeline deployment
|
||||||
|
|
||||||
Current focus: Feature 0016 is blocked before its first stage by missing access
|
Current focus: Resume Feature 0016 local preparation using the installed
|
||||||
to the operational controller and target, the Vault workflow and credentials,
|
workspace Ansible tools. Controller/SSH/Vault inputs gate live deployment;
|
||||||
and an operator-selected acceptance session. Feature 0015 passed independent
|
session selection gates the end-to-end exercise. Feature 0015 passed independent
|
||||||
review without findings; administrative closeout remains part of the blocked
|
review without findings; administrative closeout remains part of Stage 1.
|
||||||
sprint.
|
|
||||||
|
|
||||||
| ID | Deliverable | Owner | State | Evidence or next step |
|
| ID | Deliverable | Owner | State | Evidence or next step |
|
||||||
| --- | --- | --- | --- | --- |
|
| --- | --- | --- | --- | --- |
|
||||||
@@ -36,7 +35,7 @@ sprint.
|
|||||||
| F0013 | Publish the first coordinated suite release | all Ansible repositories and workspace | done | Public [`rakestraw.dnd` 0.1.0 release](https://gitea.maximumdirect.net/eric/ansible-collection-dnd/releases/tag/v0.1.0); documentation remediation completed in pipeline `78afffe` and collection `5e695f3` |
|
| F0013 | Publish the first coordinated suite release | all Ansible repositories and workspace | done | Public [`rakestraw.dnd` 0.1.0 release](https://gitea.maximumdirect.net/eric/ansible-collection-dnd/releases/tag/v0.1.0); documentation remediation completed in pipeline `78afffe` and collection `5e695f3` |
|
||||||
| F0014 | Enroll existing pipeline operators | ansible-role-dnd-pipeline, ansible-collection-dnd, and workspace | done | Pipeline `c13f726` and collection import `c0b0ebd` passed their complete integration suites and independent review with no remediation findings |
|
| F0014 | Enroll existing pipeline operators | ansible-role-dnd-pipeline, ansible-collection-dnd, and workspace | done | Pipeline `c13f726` and collection import `c0b0ebd` passed their complete integration suites and independent review with no remediation findings |
|
||||||
| F0015 | Enable D&D S3 storage and publishing | ansible-role-dnd-pipeline, ansible-collection-dnd, and workspace | in_progress | Pipeline `51566afcf69083cdbb5b5718f2544c86b079001c`, collection fixture `cf3de016ee09edf91afc3bc1addfd926d4a172ad`, collection squash `77f67adbc0f700e88bc15554e02052eaa22f1033`, and collection merge `46913446765e86ecfb29ebad9955d579ef6a4c7e` passed the complete repository suites; independent review is next |
|
| F0015 | Enable D&D S3 storage and publishing | ansible-role-dnd-pipeline, ansible-collection-dnd, and workspace | in_progress | Pipeline `51566afcf69083cdbb5b5718f2544c86b079001c`, collection fixture `cf3de016ee09edf91afc3bc1addfd926d4a172ad`, collection squash `77f67adbc0f700e88bc15554e02052eaa22f1033`, and collection merge `46913446765e86ecfb29ebad9955d579ef6a4c7e` passed the complete repository suites; independent review is next |
|
||||||
| F0016 | Deploy the D&D pipeline to `pipeline-dnd` | rakestraw-ansible and workspace | blocked | Stage 1 cannot proceed from `devbench-02`: the operational controller/checkout and target SSH access are unavailable, as are the Vault workflow/credentials and selected acceptance session; see the [implementation plan](roadmap/implementation.md) |
|
| F0016 | Deploy the D&D pipeline to `pipeline-dnd` | rakestraw-ansible and workspace | ready | Revised [implementation plan](roadmap/implementation.md) permits local Stages 1–2 with `.venv` tooling; operational inputs gate Stages 3–4 only |
|
||||||
| A0001 | Audit completed standalone-role test suites | workspace and standalone roles | done | Findings recorded in `docs/roadmap/test-suite-audit-findings.md` |
|
| A0001 | Audit completed standalone-role test suites | workspace and standalone roles | done | Findings recorded in `docs/roadmap/test-suite-audit-findings.md` |
|
||||||
| R0001 | Simplify completed standalone-role test suites | workspace and standalone roles | done | Role commits `e08c63c`, `d2d0b9d`, and `cfecf37` passed implementation and independent review |
|
| R0001 | Simplify completed standalone-role test suites | workspace and standalone roles | done | Role commits `e08c63c`, `d2d0b9d`, and `cfecf37` passed implementation and independent review |
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user