The Problem: E-Books Need a Delivery Control Plane

Our sales engineering team publishes crypto e-books for field teams, partners, and compliance reviewers. Fourteen PDFs, each with pricing tables, regulatory notes, and product claims. The old process lived on a shared drive and a group inbox. A reader could open a stale copy, a partner could receive an unsigned file, and nobody could prove which version was approved. A regulatory review asked for a byte-for-byte audit trail across three years. That request turned e-book delivery into an infrastructure problem.

We decided the e-books should be treated like production software artifacts. GitHub becomes the source of truth. Ansible orchestrates releases. Red Hat OpenShift runs the build and signing services. Crypto gives us integrity and non-repudiation. The result is a repeatable path from a pull request to a verified reader download.

flowchart TD A[Author pushes e-book source to GitHub] --> B[GitHub Actions validates manifest] B --> C[Ansible Automation Platform job template] C --> D[Red Hat OpenShift build pipeline] D --> E[Crypto signing service creates detached signature] E --> F[Object storage bucket for e-books] F --> G[Event bus publishes release event] G --> H[Notification service sends reader link] H --> I[Reader downloads e-book] C --> J[Inventory and drift remediation] J --> D

Source of Truth in GitHub

Each e-book has a dedicated repository. The repository contains the manuscript, a manifest.yaml, a theme package, and a release policy. The manifest records title, audience, classification, version, and the public key fingerprint expected for the release. A pull request triggers GitHub Actions. The workflow runs markdown lint, schema validation, PDF rendering in a pinned container, and a metadata diff against the previous release. On merge to main, the workflow calls Ansible Automation Platform through a signed webhook. GitHub branch protection requires two reviewers, one from product and one from compliance. Every release maps to a commit SHA, so we can trace any reader download back to the exact source.

Ansible as the Orchestration Layer

Ansible Automation Platform is the conductor. It consumes a Git-backed dynamic inventory for dev, staging, and production. A release playbook creates the OpenShift namespace, applies quotas, network policies, service accounts, and secrets. It provisions the signing job, waits for the build to finish, verifies the signature, and publishes the release event. A second playbook runs nightly to compare live cluster objects against the desired state and remediate drift. We use job templates, inventories, and credentials in Ansible Automation Platform rather than ad hoc scripts. This gives us repeatability and a clean audit record for every environment.

Red Hat OpenShift Runtime

The runtime is a set of OpenShift deployments. The builder service renders each e-book into PDF and EPUB. The signer service computes SHA-256 digests and creates detached signatures. The portal service serves the internal reader experience. The download service enforces policy before issuing a signed, short-lived URL. The services run behind a service mesh with mTLS. Network policies allow only the release pipeline to call the signer. Horizontal pod autoscaling handles the burst when a new e-book is announced. Resource quotas keep the platform predictable. Red Hat OpenShift gives us a consistent runtime from staging to production.

Policy, Identity, and GitOps Controls

We use Argo CD to sync the release application from a GitOps repository. Open Policy Agent Gatekeeper and Kyverno enforce image provenance and resource limits. SPIFFE/SPIRE issues workload identities, so signer and portal services authenticate without shared secrets. Cilium provides eBPF network visibility. Falco watches for unexpected process activity in builder pods. PostgreSQL stores release metadata and audit indexes. Redis caches reader entitlements. This layer is essential because e-books contain regulated crypto material and must be served only to approved audiences.

Crypto and Release Integrity

The signer uses ECDSA P-256 keys. Private keys live in Vault and are never written to GitHub. Public keys are distributed through a ConfigMap and pinned in the reader portal. Every release produces a detached signature and a manifest. The portal verifies both before it serves a download. If the signature does not match, the release is blocked and the event bus receives a failed-release message. We also append release records to an immutable transparency bucket. Compliance can prove which bytes were approved, when they were signed, and which key was used. Crypto is not a checkbox here; it is the mechanism that makes e-book delivery trustworthy.

Event-Driven Delivery and Observability

A release publishes to the Kafka topic ebook.release.v1. The notification service sends an email with a signed, short-lived URL. The download service writes an audit record for every request. Prometheus, Grafana, Loki, and OpenTelemetry give us metrics, logs, and traces across the whole path. Alerts fire for signature failures, inventory drift, missing manifests, and stalled Ansible jobs. Runbooks are versioned in Ansible and linked from alert annotations. The platform is observable from the first pull request to the final download.

Failure Handling and Rollback

If a build fails, Ansible stops the release before signing. If signing succeeds but verification fails, the release event is marked failed and the portal keeps serving the previous signed manifest. Rollback is a Git revert in the e-book repository, followed by an Ansible job template that promotes the last known good release. PostgreSQL retains release indexes, and the transparency bucket retains signatures. This gives us a clear rollback path without manual file copying. We can rehearse the whole flow in staging with the same playbooks, the same OpenShift policies, and the same crypto verification path.

Why This Works for Us

The e-book pipeline now handles fourteen titles and will soon cover forty. Releases move from two days of manual assembly to about eighteen minutes of automated flow. We have zero unsigned releases since launch. We can answer audit questions with a commit SHA, a signature, and an event record. The infrastructure is reproducible, the source is in GitHub, the runtime is on Red Hat OpenShift, and the release path is driven by Ansible. The crypto layer gives every e-book the same integrity guarantee we expect from software artifacts. This is how a modern engineering organization should deliver e-books.