146 lines
6.7 KiB
Markdown
146 lines
6.7 KiB
Markdown
# Feature 0016: Prepare the D&D Deployment Playbook for `pipeline-dnd`
|
||
|
||
Status: in_progress
|
||
|
||
## Summary
|
||
|
||
Write and commit the consumer playbook, necessary host variables, dependency
|
||
manifest, and concise usage documentation in `rakestraw-ansible`. This feature
|
||
ends with repository preparation. Deployment to a controller or target host
|
||
and execution of the pipeline are separate operator work.
|
||
|
||
## Scope
|
||
|
||
- `playbooks/pipeline/dnd.yml` targets the existing `pipeline-dnd` alias and
|
||
applies `rakestraw.dnd.pipeline`, using only hosts and roles.
|
||
- Host choices belong in `inventory/host_vars/pipeline-dnd/`: the WhisperX
|
||
endpoint, initial operator `eric`, default campaign `dilfs`, and credential
|
||
references. Unknown required values are explained in adjacent comments.
|
||
- Inherit the reviewed suite's storage, publication, caching, cleanup, and
|
||
application defaults. Retire obsolete legacy host variables.
|
||
- Root `requirements.yml` selects the reviewed public collection snapshot and
|
||
its role/native collection dependencies, preserving unrelated entries.
|
||
- Document local validation and eventual operator use. Commit the completed
|
||
repository changes without requiring remote access or real credentials.
|
||
|
||
## Non-goals
|
||
|
||
- Installing or updating anything on the operational controller or target.
|
||
- Connecting to `pipeline-dnd`, validating its platform or sudo access,
|
||
converging the host, checking runtime identities, or executing a real session.
|
||
- Obtaining API keys, choosing a Vault password, populating real credentials,
|
||
or selecting acceptance audio/session data.
|
||
- Changing application/role behavior, publishing a new suite release, adding
|
||
orchestration layers, or retiring the proof-of-concept role/playbook.
|
||
|
||
## Target End State
|
||
|
||
The committed playbook is:
|
||
|
||
```yaml
|
||
---
|
||
- hosts:
|
||
- pipeline-dnd
|
||
roles:
|
||
- rakestraw.dnd.pipeline
|
||
...
|
||
```
|
||
|
||
Existing connection variables remain in the host's `main.yml`. Its
|
||
`narratio.yml` contains the following public configuration and comments:
|
||
|
||
```yaml
|
||
dnd_pipeline_operator_users:
|
||
- eric
|
||
|
||
dnd_pipeline_whisperx_transcribe_url: >-
|
||
https://transcription.ai.rakestrawhome.com/transcribe
|
||
|
||
narratio_campaigns_default_campaign_id: dilfs
|
||
|
||
# Before deployment, define the four vault_dnd_* variables below in an
|
||
# Ansible Vault-encrypted host_vars/pipeline-dnd/vault.yml file.
|
||
# Values are not known here; leave these references unresolved until supplied.
|
||
# Do not put API keys or object-storage credentials in this plaintext file.
|
||
dnd_pipeline_secrets:
|
||
AUDITA_LLM_API_KEY: "{{ vault_dnd_audita_llm_api_key }}"
|
||
OPENROUTER_API_KEY: "{{ vault_dnd_openrouter_api_key }}"
|
||
OBJECT_STORAGE_KEY_ID: "{{ vault_dnd_object_storage_key_id }}"
|
||
OBJECT_STORAGE_KEY: "{{ vault_dnd_object_storage_key }}"
|
||
```
|
||
|
||
The references and comments are a complete deliverable for unknown secrets.
|
||
No encrypted file, placeholder key, or real credential is required for feature
|
||
completion. Future operator-supplied values should be Vault-encrypted in Git;
|
||
the suite's existing restricted runtime secrets files remain the delivery path.
|
||
|
||
The manifest pins the collection to
|
||
`46913446765e86ecfb29ebad9955d579ef6a4c7e`, containing reviewed pipeline commit
|
||
`51566afcf69083cdbb5b5718f2544c86b079001c`. Its five standalone role dependencies
|
||
use their reviewed `v0.1.0` tags, with `ansible.posix` `2.2.0` and
|
||
`community.general` `13.3.0`. Suite Git dependencies use public Gitea URLs;
|
||
native collections come from Galaxy. Local sibling checkouts are not dependencies.
|
||
|
||
The runbook explains that the selected collection snapshot still reports
|
||
`0.1.0`, so eventual operator installation must explicitly refresh it from
|
||
the pinned commit if an older `0.1.0` is installed. This is an instruction
|
||
for future use, not an operation required by this feature.
|
||
|
||
## Repository Ownership
|
||
|
||
- `rakestraw-ansible`: consumer files, comments, dependency manifest, and runbook.
|
||
- Workspace: roadmap, staged plan, progress, and independent review record.
|
||
- Roles, collection, applications, and assets: read-only contract references.
|
||
|
||
## Constraints and Settled Decisions
|
||
|
||
The workspace [Ansible](../../ansible.md), [testing](../../testing.md), and
|
||
[planning](../../planning.md) policies apply. Feature 0015 has passed review
|
||
and supplies the required suite interface.
|
||
|
||
- Keep playbooks minimal and settings in inventory. Preserve `pipeline-dnd`
|
||
and its connection identity; do not rename it to `pipeline.dnd`.
|
||
- Preserve `dilfs` using the existing standalone Narratio variable. Remove
|
||
legacy `narratio_s3_*` and `narratio_default_campaign_id` host settings.
|
||
- Missing operational inputs are documented, not treated as implementation
|
||
blockers. No remote controller, SSH identity, Vault password, or session is
|
||
required for repository preparation.
|
||
- Local dependency installation and syntax/host-selection checks are permitted.
|
||
Existing passing evidence may be reused when relevant inputs are unchanged.
|
||
- `ansible-doc` rendering is not an acceptance gate. Missing role argument
|
||
descriptions are a separate documentation improvement.
|
||
|
||
## Simplest Viable Implementation
|
||
|
||
Retain the already-committed minimal playbook, manifest, and public inventory.
|
||
Add adjacent comments for unresolved credentials, align the runbook with the
|
||
repository-only scope, perform appropriate local checks, and commit. No new
|
||
Ansible task, runtime test harness, or deployment automation is needed.
|
||
|
||
## Acceptance Criteria
|
||
|
||
- The playbook targets only `pipeline-dnd` and applies only the collection role.
|
||
- Host inventory expresses the known choices above and documents unknown
|
||
credentials next to their references without real or fake secret values.
|
||
- The dependency manifest contains the reviewed public pins and preserves
|
||
unrelated dependencies. Public installation and local syntax/host-selection
|
||
evidence are available; no documentation-rendering check is required.
|
||
- The runbook distinguishes repository readiness from future deployment and
|
||
explains how the operator supplies missing values and eventually invokes it.
|
||
- Changes are committed in the owning repositories, with clean working trees
|
||
for the feature's changes. No controller deployment, target convergence,
|
||
clean-repeat run, or real pipeline execution is required or claimed.
|
||
- Historical role/playbook files remain available.
|
||
|
||
## Dependencies and Follow-up Work
|
||
|
||
Features 0013–0015 supply public dependencies, operator enrollment, and storage
|
||
policy. Feature 0016's consumer preparation already exists in `12b2462`, with
|
||
initial documentation in `716a80e`; remaining work aligns comments and docs
|
||
with the user's clarified scope.
|
||
|
||
The operator may later provision Vault values, install dependencies on their
|
||
controller, deploy to the host, and validate real processing/publication.
|
||
Those actions require a separate request and are not unfinished Feature 0016
|
||
acceptance requirements.
|