# Feature 0016: Prepare the D&D Deployment Playbook for `pipeline-dnd` Status: done ## 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 `2a53979069ff8d091172650729ae2135c1603163`, containing pipeline commit `f48008aa38e1c50adde18aa455d12a8ad77023c2` with Narratio v2.1.2. 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. Consumer preparation was completed in `716a80e`, `12b2462`, and `7f8353d`, and passed independent review with no remediation findings. Public dependency installation, target-only host listing, syntax checking, and whitespace validation passed. Subsequent consumer commit `7f4c90a` updates the collection pin for the Narratio v2.1.2 bug fix; collection build and syntax validation passed. These changes are committed and published. 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.