A framework for creating enterprise-grade solution guides for Ansible Automation Platform.
Quick start: Jump to the Starter Template.
Copy the ready-made skeleton, fill in the placeholders, and score your draft against the Quality Scoring Rubric before publishing.
This framework is for Ansible Automation Platform field teams, solution architects, and technical content authors who create customer-facing technical content. Solution guides are authored and maintained as markdown in GitHub – not as Knowledge Base articles on the customer portal. This approach enables AI-assisted fact-checking, version-controlled collaboration, and continuous improvement that the KB workflow on access.redhat.com cannot support. This document defines the structure, quality bar, and review process you should follow.
Solution guides are written for IT practitioners and decision makers evaluating or implementing Ansible Automation Platform. The typical reader is:
| Persona | What They Need from a Solution Guide |
|---|---|
| IT Ops Engineer / SRE | Executable examples they can adapt to their environment – real YAML, real workflows, real validation steps |
| Automation Architect | A reference architecture showing how AAP components connect to external systems, with enough detail to design their own implementation |
| IT Manager / Director | A clear problem statement, measurable outcomes, and an incremental adoption path they can use to justify investment and manage risk |
Every section of a solution guide should serve at least one of these personas. If a section only makes sense to someone who already knows the answer, it needs to be rewritten.
Solution guides are a specific content type – they are not the only way Red Hat publishes technical content, and understanding the differences helps you decide whether a solution guide is the right format for what you want to write.
| Content Type | Where It Lives | Audience | Purpose | Depth |
|---|---|---|---|---|
| KB Solution | access.redhat.com | Customer hitting a specific error | Fix a single, known issue (e.g., “Error X when upgrading AAP”) | Narrow – one problem, one fix |
| Solution Guide | GitHub (this repo) | Customer evaluating or implementing a solution | Explain how to solve an operational problem end-to-end using AAP | Deep – architecture, code, validation, maturity path |
| Blog Post | redhat.com/blog | Broad technical audience | Announce, evangelize, or explain a concept or release | Medium – narrative-driven, light on executable detail |
| Learning Path | developers.redhat.com | Developer or admin learning a skill | Teach a tool or technology through progressive, hands-on exercises | Deep – tutorial-oriented, step-by-step skill building |
Solution guides are the second row. They are maintained in GitHub, not on the customer portal. They solve a real operational problem, not a single error (that’s a KB Solution). They include executable automation, not just narrative (that’s a blog). They are outcome-oriented, not skill-oriented (that’s a learning path). Hosting them in GitHub enables version control, AI-assisted review, and collaboration workflows that static KB articles cannot provide.
When not to write a solution guide.
If your content is a fix for a specific error, write a KB Solution. If it’s an announcement or thought leadership piece, write a blog. If it’s teaching someone how to use a tool from scratch, write a learning path or tutorial. Solution guides exist in the space between – they assume the reader knows what Ansible is but needs to see how to solve a specific operational problem with it.
These sections map 1:1 to the section names in every solution guide. When reviewing a guide, you should be able to match each section header directly to this framework.
| Step | Section | What It Covers |
|---|---|---|
| 1 | Title | Outcome-oriented naming convention |
| 2 | Overview | Problem statement, hero image, table of contents |
| 3 | Background | Domain context – what the topic is and why it matters |
| 4 | Solution | Components, persona mapping, demos/videos |
| 5 | Prerequisites | AAP version, collections, external systems, guide metadata |
| 6 | Workflow and Architecture | Diagrams, narrative walkthrough, visual patterns |
| 7 | Solution Walkthrough | Featured code, AAP integration, step-by-step technical depth |
| 8 | Validation | Concrete tests, expected output, troubleshooting |
| 9 | Maturity Path and Related Guides | Crawl/Walk/Run, cross-linking, ROI recap |
| Section | What It Covers |
|---|---|
| Reference | Scoring rubric, failure modes, elite guide criteria |
| Appendix: Starter Template | Copy-paste skeleton for new guides |
Rule: Titles must describe an operational outcome, not a product feature.
Solution guides follow the convention [Topic] - Solution Guide. Within that convention, the topic portion should still be outcome-oriented whenever possible.
Bad:
Good (standard format):
Better (outcome-oriented):
Tip: When in doubt, use the standard format.
Use
[Topic] - Solution Guidefor the title, but lead the guide itself with an outcome-oriented subtitle or problem statement in the Overview section.
Solution vs. Tutorial: A solution guide must solve an operational problem, not teach how to use a tool. If your guide could be titled “Getting started with X” or “How to use Y,” it is a tutorial, not a solution. Reframe it around the outcome: what real-world problem does this automation solve?
| Type | Example Title | Verdict |
|---|---|---|
| Tutorial | “Get started with EDA (Ansible Rulebook)” | Not a solution guide – teaches a tool |
| Solution | “Responding to Infrastructure Alerts with Event-Driven Ansible” | Solves a real operational problem |
Litmus test: Would a VP of IT understand the value from the title alone, without knowing Ansible?
The Overview is the first thing a reader sees. It must frame the guide strategically so it is readable by a decision maker, not just a practitioner. This is where you hook the reader.
Define the operational pain in 2-4 sentences max. Quantify if possible (time, cost, risk, compliance). This goes directly after the hero image.
Example format:
Example problem statement:
Organizations spend X hours manually performing Y, leading to Z risk. This guide demonstrates how to automate this workflow using AAP to reduce effort by X% and improve consistency.
Include a linked table of contents after the problem statement so readers can jump to any section.
Explain what the topic is and why it matters. This section provides the domain context a reader needs before the solution architecture makes sense.
Not every reader will know what AIOps is, or how ServiceNow ticket enrichment works, or why network backup matters. The Background section answers: “What problem space are we in, and why should I care?”
Tip: Background is not the solution.
Keep the Background focused on the problem domain. The specific tools and components that make up your solution belong in the next section.
Describe the specific components that make up the solution and who benefits from it. This is the answer to: “What are we building, and who is it for?”
List the tools and technologies used in this solution. Link to product pages.
Example:
Map the solution to specific personas so each audience sees their value immediately.
| Persona | Challenge | What They Gain |
|---|---|---|
| IT Ops Engineer / SRE | [Their specific pain] | [What this guide gives them] |
| Automation Architect | [Their specific pain] | [What this guide gives them] |
| IT Manager / Director | [Their specific pain] | [What this guide gives them] |
Tip: Add a “Challenge” column.
A three-column persona table (Persona, Challenge, What They Gain) is more persuasive than two columns because it anchors the value in a specific pain the reader recognizes.
Link to YouTube videos, Instruqt labs, and interactive demos here. This gives the reader an immediate way to see the solution in action before reading the full technical walkthrough.
Set expectations early. This is where many solution guides fail – the reader needs to know what they are getting into before they start.
State the minimum AAP version required. If specific features (like EDA Controller) require a particular version, call that out.
List every collection used in the guide with a direct link to its page on Automation Hub. This is mandatory.
Example:
| Collection | Type | Purpose |
|---|---|---|
| ansible.eda | Certified | EDA event sources and filters |
| redhat.ai | Certified | AI model configuration and serving |
| infra.ai | Validated | AI infrastructure provisioning |
List any external tools, services, or infrastructure the reader needs.
| System | Required | Examples |
|---|---|---|
| Observability tool | Yes | Filebeat, IBM Instana, Splunk |
| Message queue | Optional | Apache Kafka, AWS SQS |
| AI inference endpoint | Yes | Red Hat AI or any OpenAI-compatible API |
If applicable, note:
State the impact level. If it varies per step, note it per step rather than per guide.
| Impact | Meaning |
|---|---|
| None | Read-only, no changes to systems |
| Low | Safe, reversible changes |
| Medium | Configuration changes, test first |
| High | Production mutation, requires change advisory board (CAB) |
Include these fields near the top of each guide, directly after the overview:
This is the “aha” layer – it must show causality so the reader understands the end-to-end flow before diving into code.
Simple. Clean. 3-6 blocks max. Every guide must have at least one diagram. Choose the pattern that matches your guide type:
Event-driven (EDA) pattern:
Alert → EDA Rulebook → Job Template → API Call → Resolution
Provisioning / Day 1 pattern:
Request → Survey/Vars → Workflow Template → Provision → Validate → Notify
Day 2 operations pattern:
Schedule/Trigger → Fact Gather → Analyze/Compare → Remediate → Report
Integration pattern:
External Event (ITSM/Webhook) → Controller API → Playbook → Update Source System
Tip: Draw your own if needed.
If your guide doesn’t fit any of these patterns, draw your own – but if you can’t draw it in 3-6 blocks, the workflow may be too complex for a single guide. Consider splitting.
Explain the logic in 5-8 sentences:
Litmus test: Could someone redraw the workflow after reading your narrative alone?
Use the right visual format for the right purpose:
| Format | When to Use | Example |
|---|---|---|
| Workflow diagram | Show end-to-end causality (3-6 blocks) | Event -> EDA -> Playbook -> Result |
| Architecture diagram | Show system components and connections | AAP <-> Kafka <-> Observability tool |
| Tables | Compare options, map events to responses | Event / Source / Response tables |
| Code blocks (YAML) | Show the actual automation logic | Featured tasks, rulebooks, API calls |
| Screenshots | Show AAP UI configuration (Job Templates, Workflows) | Workflow Visualizer, Survey setup |
| Callout boxes | Highlight tips, warnings, and context | Blockquotes with tip/warning prefix |
Callout conventions: Use blockquotes for tips, warnings, and contextual notes. Keep a consistent style across all guides:
When referencing third-party tools (Kafka, Splunk, ServiceNow, etc.), include their logo image inline where it aids scannability. Keep logos to a consistent width (e.g., 200px) and link to the relevant Automation Hub page.
This is where credibility is built – the executable proof that the automation works. This is the largest section of the guide and contains the step-by-step technical depth.
Break the walkthrough into numbered steps or workflow stages. Each step should have:
Do NOT dump the full repo. Show the critical pieces:
Example:
- name: Update ServiceNow ticket with enriched data
servicenow.itsm.incident:
number: ""
state: "In Progress"
work_notes: ""
Then link to the full source: github.com/your-org/solution-guide-x
Show:
No vague instructions like “Create a job template.” Be explicit. Here is the minimum level of detail expected:
Example – Job Template configuration:
| Field | Value |
|---|---|
| Name | ServiceNow Ticket Enrichment |
| Inventory | ServiceNow Hosts |
| Project | ITSM Automation |
| Playbook | enrich_ticket.yml |
| Credentials | ServiceNow API Token, Machine Credential |
| Extra Variables | incident_number (prompt on launch) |
| Verbosity | 1 (Verbose) |
Example – Credential mapping:
Custom Credential Types for API tokens.
Inject tokens as extra variables or environment variables – never hardcode secrets in playbooks. See Creating Custom Credential Types in the AAP documentation.
Example – RBAC note:
RBAC: Scope roles tightly per team.
Assign the
Executerole on this Job Template to theops-tier1team. TheAdminrole should be limited to the automation architect team to prevent accidental template modification.
This is mandatory – a guide without a validation step is a guide that cannot be trusted. Validation was the most inconsistent section across existing guides, and many omit it entirely.
For reference architecture guides that cover multiple tools or patterns, validation can be done per workflow stage (checklist approach) rather than with a single test command. For implementation guides that target a specific tool, provide a concrete executable test.
Define a concrete, repeatable test. Not a vague suggestion – an actual command or action the reader can execute.
Good example (API test):
curl -sk https://controller.example.com/api/v2/job_templates/42/launch/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"extra_vars": {"incident_number": "INC0012345"}}' | jq .status
Good example (EDA test):
Send a test event to the webhook endpoint:
curl -H "Content-Type: application/json" \ -d '{"alert": "high_cpu", "host": "web01.example.com"}' \ http://eda.example.com:5000/endpoint
Good example (manual trigger):
Manual trigger via the AAP UI.
Navigate to Resources → Templates → [Template Name] in the AAP Controller UI. Click Launch and provide the survey values when prompted.
Good example (per-stage checklist for reference architectures):
| Stage | What to Verify | Success Indicator |
|---|---|---|
| 1. Event Detection | Rulebook activation is running | EDA Controller shows activation as Running |
| 2. Enrichment | AI analyzed the incident | Workflow Visualizer shows all nodes green |
| 3. Remediation | Playbook was generated and committed | New file exists in Git repo |
| 4. Execute | Fix was applied | Service returns to steady state |
Show the actual output the reader should expect. Do not describe it in prose – show it.
Good example (console output):
PLAY RECAP *********************************************************************
servicenow_host : ok=4 changed=2 unreachable=0 failed=0 skipped=0
Good example (state change):
After the playbook completes, the ServiceNow incident should show:
- State: In Progress
- Work Notes: Contains the AI-generated summary
- Assignment Group: Updated to the correct tier
Include at least 2-3 common failure scenarios and how to diagnose them:
| Symptom | Likely Cause | Fix |
|---|---|---|
401 Unauthorized |
Expired or invalid API token | Regenerate the token and update the credential in AAP |
| Playbook hangs at “Gathering Facts” | Target host unreachable | Verify network connectivity and SSH/WinRM access |
| EDA rulebook doesn’t fire | Event payload doesn’t match condition | Check rulebook condition syntax against the actual event JSON |
Close the loop so the guide is more than just a lab exercise. Show the reader where they are on the adoption journey and where to go next.
Every guide should map to a maturity progression. This helps organizations adopt incrementally rather than requiring a big-bang implementation.
| Maturity | Description |
|---|---|
| Crawl | Read-only enrichment |
| Walk | Automated ticket updates |
| Run | Fully automated remediation |
The progression should be specific to the guide’s use case. The key question at each stage is: how much autonomy does automation have?
Every guide exists within a broader ecosystem. Authors must identify and link to related guides so readers understand the full journey.
Example cross-links:
Related guides:
- Need to deploy the AI infrastructure first? See AI Infrastructure automation with Ansible
- Ready to add event-driven triggers? See Get started with EDA
Summarize the measurable outcome the reader has achieved.
Completed: The solution guide is done.
You now have automated X, reducing manual effort and improving consistency.
Grade guides against this rubric before publishing:
| Category | Weight |
|---|---|
| Outcome Clarity | 20% |
| Architecture Clarity | 20% |
| Technical Executability | 25% |
| Validation/Testability | 15% |
| Production Readiness Info | 10% |
| Business Framing | 10% |
Score each 1-5. Anything below 3 in any category – revise before publish.
Reject guides that exhibit any of these patterns:
A truly excellent solution guide:
Minimum Depth Standard: A guide that covers every section can still fail in practice if it lacks depth.
| Indicator | Minimum | Ideal |
|---|---|---|
| Solution walkthrough steps | 3 | 5-8 |
| YAML code blocks | 2 | 4-6 |
| Total guide length | ~800 words | 1500-2500 words |
| Diagrams | 1 | 2-3 |
| Validation scenarios | 1 | 2-3 (including failure cases) |
Warning: Your guide may be too thin.
If it has fewer than 3 walkthrough steps or fewer than 2 code blocks, either expand the scope or merge it with a related guide.
Copy this skeleton when creating a new solution guide. Replace all placeholder text.
# [Topic] - Solution Guide
## Overview
<!-- 2-4 sentence problem statement. Define the operational pain and quantify if possible. -->
Organizations spend X hours manually performing Y, leading to Z risk. This guide demonstrates how to automate this workflow using Ansible Automation Platform.
## Background
<!-- 1-3 paragraphs explaining what the topic is and why it matters. Link to redhat.com topic pages for deeper reading. -->
## Solution
<!-- List the components that make up this solution. Link to product pages. -->
- **[Tool 1]** for [purpose]
- **[Tool 2]** for [purpose]
- **Ansible Automation Platform** for orchestration
### Who Benefits
| Persona | Challenge | What They Gain |
|---------|-----------|---------------|
| IT Ops Engineer | [Their pain] | [What they get] |
| Automation Architect | [Their pain] | [What they get] |
| IT Manager | [Their pain] | [What they get] |
**Recommended Demos and Self-Paced Labs:**
- [Demo or lab name](https://link)
## Prerequisites
### Ansible Automation Platform
- **Ansible Automation Platform X.X+** -- [reason for version requirement]
### Featured Ansible Content Collections
| Collection | Type | Purpose |
|-----------|------|---------|
| [collection.name](https://console.redhat.com/ansible/automation-hub/repo/published/namespace/name/) | Certified | [Purpose] |
### External Systems
| System | Required | Examples |
|--------|----------|----------|
| [System type] | Yes / Optional | [Specific tools] |
**Operational Impact:** None | Low | Medium | High
## [Topic] Workflow
<!-- Include a workflow diagram: 3-6 blocks showing the end-to-end flow. -->
```
[Trigger] → [Step 1] → [Step 2] → [Result]
```
<!-- 5-8 sentence narrative explaining what triggers the workflow, what logic runs, and what outcome is produced. -->
## Solution Walkthrough
### Step 1: [Name]
**Operational Impact:** Low
<!-- Explanation of what this step does. -->
```yaml
- name: Example task
namespace.collection.module:
parameter: ""
```
### Step 2: [Name]
**Operational Impact:** Medium
<!-- Continue with additional steps. -->
## Validation
### Test
<!-- Provide a concrete, executable test -- an actual command or UI action, not just "run the playbook." -->
```bash
# Example: curl, ansible-playbook CLI, or AAP API call
```
### Expected Result
<!-- Show the actual expected output verbatim. -->
```
PLAY RECAP *********************************************************************
target_host : ok=X changed=X unreachable=0 failed=0 skipped=0
```
### Troubleshooting
| Symptom | Likely Cause | Fix |
|---------|-------------|-----|
| [Error message or behavior] | [Root cause] | [Resolution steps] |
| [Error message or behavior] | [Root cause] | [Resolution steps] |
## Maturity Path
| Maturity | Description |
|----------|-------------|
| **Crawl** | [Starting point -- read-only, low risk] |
| **Walk** | [Intermediate -- curated automation, human approval] |
| **Run** | [Fully automated -- AI-driven, policy-governed] |
## Related Guides
- [Related guide 1](link)
- [Related guide 2](link)
## Sources
- [Red Hat Ansible Automation Platform](https://www.redhat.com/en/technologies/management/ansible)
- [Additional source](link)