Runbook Generator
This skill guides agents producing runbook library content for the GSD OpenStack Cloud Platform. Runbooks provide step-by-step procedures indexed by both task (what you want to do) and symptom (what went wrong), following the NASA procedure format from SP-6105 SS 5.3 (Product Verification) and the operational handoff requirements of NPR 7123.1 Process 9 (Product Transition).
Runbooks differ from operations manual procedures in scope and intent. Operations manual procedures cover planned, routine activities (health checks, upgrades, backups). Runbooks cover reactive activities (incident response, troubleshooting, failure recovery) and operational tasks that may be performed under time pressure.
Runbook Entry Format
Every runbook entry follows the standard format defined in the project vision (Section 2.3 of gsd-openstack-nasa-vision.md):
RUNBOOK: RB-{SERVICE}-{NNN} -- {TITLE}
SE Phase Reference: NPR 7123.1 SS {section}
Last Verified Against: {OpenStack release version}, {YYYY-MM-DD}
Verification Method: {automated / manual / both}
PRECONDITIONS
1. {System state required before starting}
2. {Access level or credentials needed}
3. {Related services that must be available}
PROCEDURE
Step 1: {Exact command or action}
Expected: {What you should see}
If not: {Go to step N / escalate to {role} / see RB-{SERVICE}-{NNN}}
Step 2: {Exact command or action}
Expected: {What you should see}
If not: {Recovery action}
Step N: ...
VERIFICATION
1. {How to confirm the procedure resolved the issue}
2. {Service health check command and expected output}
3. {Monitoring metric that should return to normal}
ROLLBACK
1. {How to undo changes if the procedure made things worse}
2. {Steps to restore previous state}
3. {Confirmation that rollback succeeded}
RELATED RUNBOOKS
- RB-{SERVICE}-{NNN}: {Title} -- {When to use instead}
- OPS-{SERVICE}-{NUMBER}: {Title} -- {Related ops manual procedure}
Runbook ID Format
- Pattern:
RB-{SERVICE}-{NNN}
- SERVICE: Uppercase service name (KEYSTONE, NOVA, NEUTRON, CINDER, GLANCE, SWIFT, HEAT, HORIZON, KOLLA, GENERAL)
- NNN: 3-digit sequential number per service, starting at 001
- Cross-service runbooks use GENERAL prefix
- Examples:
RB-NOVA-001, RB-KEYSTONE-003, RB-GENERAL-005
Dual Indexing System
Runbooks are indexed two ways so operators can find the right procedure regardless of their starting context. An operator who knows what they want to do uses the task index. An operator responding to an incident uses the symptom index.
Task Index
The task index organizes runbooks by operational intent. Categories follow the operational lifecycle:
DEPLOY -- Initial setup and infrastructure expansion
- Initial deployment (single-node)
- Initial deployment (multi-node)
- Add compute node
- Add storage node
- Add network node
OPERATE -- Day-to-day operational tasks
- Create project and users
- Configure networking for project
- Launch instance from image
- Attach block storage
- Create and restore backup
- Apply security update
- Perform rolling upgrade
MONITOR -- Scheduled observation and assessment
- Daily health check
- Weekly capacity review
- Monthly security audit
- Quarterly performance baseline
The task index file lives at docs/runbooks/task-index.md. Each entry links to the corresponding runbook by RB ID.
Symptom Index
The symptom index organizes runbooks by failure observation. Operators start here when something is broken and they need to diagnose the cause.
INSTANCE WON'T LAUNCH
- Check Nova scheduler logs for placement failures
- Verify hypervisor resources (vCPU, RAM, disk)
- Check Neutron port allocation
- Verify Glance image availability and format
- Check Keystone authentication and service catalog
NETWORK UNREACHABLE
- Verify OVS/OVN bridge status and flows
- Check Neutron DHCP agent status
- Verify security group rules allow traffic
- Check floating IP allocation and association
- Trace packet path through SDN layer
STORAGE UNAVAILABLE
- Check Cinder volume service status
- Verify backend connectivity (LVM/Ceph/NFS)
- Check iSCSI/NFS target status
- Verify volume attachment state in Nova
- Check disk space on storage nodes
AUTHENTICATION FAILED
- Verify Keystone service status and endpoints
- Check token expiration and Fernet key rotation
- Verify service catalog endpoint URLs
- Check TLS certificate validity and chain
- Verify RBAC policy files and project scoping
The symptom index file lives at docs/runbooks/symptom-index.md. Each entry links to one or more runbooks that address the symptom.
Index Requirements
- Every runbook must appear in at least one task index category.
- Every runbook must be discoverable from at least one symptom index entry.
- A single runbook may appear under multiple symptoms (e.g., a Keystone troubleshooting runbook appears under both AUTHENTICATION FAILED and INSTANCE WON'T LAUNCH).
- Index entries include the runbook ID, title, and a one-line description of when to use it.
Runbook Categories by Service
Each OpenStack service requires runbook coverage for its most common failure modes and operational tasks. This list defines the minimum runbook set per service.
Keystone (Identity)
- Token issuance failures (expired Fernet keys, clock skew)
- Service catalog problems (missing endpoints, wrong URLs)
- RBAC failures (policy misconfiguration, project scoping errors)
- Federation issues (IdP connectivity, assertion mapping)
Nova (Compute)
- Instance launch failures (scheduler, image, network, resource)
- Scheduling problems (host aggregate, availability zone, placement)
- Hypervisor issues (libvirt connectivity, resource reporting)
- Live migration (pre-check, execute, troubleshoot failures)
Neutron (Networking)
- Network connectivity loss (OVS/OVN bridge, flow rules)
- DHCP failures (agent down, port binding, namespace issues)
- Floating IP issues (allocation exhaustion, association state)
- Security group problems (rule conflicts, default deny)
- OVS/OVN issues (bridge status, flow tables, controller connectivity)
Cinder (Block Storage)
- Volume creation failures (backend capacity, driver errors)
- Attachment issues (iSCSI/NFS target, multipath, Nova coordination)
- Backend connectivity (LVM health, Ceph cluster status, NFS mount)
- Snapshot problems (consistency groups, backend limitations)
Glance (Image Service)
- Image upload failures (format validation, backend storage full)
- Format conversion issues (raw to qcow2, image properties)
- Metadata problems (property inheritance, visibility settings)
Swift (Object Storage)
- Container access issues (ACL misconfiguration, token scoping)
- Replication problems (ring consistency, replicator status)
- Quota issues (account/container quotas, rate limiting)
Heat (Orchestration)
- Stack creation failures (template validation, dependency resolution)
- Template validation errors (HOT syntax, resource type support)
- Resource dependency issues (circular references, ordering)
Horizon (Dashboard)
- Dashboard access issues (memcached sessions, Apache config)
- Session problems (timeout, cookie domain, CSRF token)
- Panel errors (service catalog discovery, API version mismatch)
Naming Convention
Consistent naming ensures runbooks are findable and sortable.
ID Structure
RB-{SERVICE}-{NNN}
SERVICE = KEYSTONE | NOVA | NEUTRON | CINDER | GLANCE | SWIFT | HEAT | HORIZON | KOLLA | GENERAL
NNN = 001, 002, 003, ... (3-digit sequential per service)
Rules
- Each service maintains its own number sequence starting at 001.
- Cross-service runbooks (affecting multiple services) use the GENERAL prefix.
- Numbers are never reused. If a runbook is deprecated, its number is retired.
- Runbook files are named by ID:
docs/runbooks/RB-NOVA-001.md, docs/runbooks/RB-GENERAL-003.md.
Number Allocation Ranges
| Service |
Range |
Example |
| KEYSTONE |
RB-KEYSTONE-001 through RB-KEYSTONE-099 |
RB-KEYSTONE-001 |
| NOVA |
RB-NOVA-001 through RB-NOVA-099 |
RB-NOVA-015 |
| NEUTRON |
RB-NEUTRON-001 through RB-NEUTRON-099 |
RB-NEUTRON-003 |
| CINDER |
RB-CINDER-001 through RB-CINDER-099 |
RB-CINDER-007 |
| GLANCE |
RB-GLANCE-001 through RB-GLANCE-099 |
RB-GLANCE-002 |
| SWIFT |
RB-SWIFT-001 through RB-SWIFT-099 |
RB-SWIFT-004 |
| HEAT |
RB-HEAT-001 through RB-HEAT-099 |
RB-HEAT-001 |
| HORIZON |
RB-HORIZON-001 through RB-HORIZON-099 |
RB-HORIZON-005 |
| KOLLA |
RB-KOLLA-001 through RB-KOLLA-099 |
RB-KOLLA-010 |
| GENERAL |
RB-GENERAL-001 through RB-GENERAL-099 |
RB-GENERAL-001 |
Verification Integration
Runbooks connect to the verification pipeline to ensure accuracy against running infrastructure.
Verification Classification
Each runbook specifies whether its verification is automated, manual, or both:
| Type |
Meaning |
Doc-Verifier Role |
| Automated |
Verification commands can be extracted and run by doc-verifier |
doc-verifier executes verification section commands and compares output |
| Manual |
Verification requires human judgment or physical access |
doc-verifier flags as manual-only; human must confirm |
| Both |
Some steps automated, some require human judgment |
doc-verifier runs automated steps and flags manual steps for review |
Verification Tracking
- Last-verified date tracks when the runbook was confirmed against a running system. Stored in the runbook header.
- System version records which OpenStack release the runbook was verified against.
- Unverified runbooks must carry a visible warning at the top of the entry:
WARNING: UNVERIFIED RUNBOOK
This runbook has not been verified against the current system version.
Last verified: {date} against {version}.
Current system: {version}.
Execute each step with extra caution and verify results manually.
- Verification cadence: All runbooks should be re-verified after any OpenStack upgrade or major configuration change.
Output Location
All runbook files are written to docs/runbooks/ following the filesystem contracts:
| File |
Content |
docs/runbooks/task-index.md |
Task-organized runbook index (DEPLOY, OPERATE, MONITOR) |
docs/runbooks/symptom-index.md |
Symptom-organized runbook index (failure categories) |
docs/runbooks/RB-KEYSTONE-*.md |
Keystone service runbooks |
docs/runbooks/RB-NOVA-*.md |
Nova service runbooks |
docs/runbooks/RB-NEUTRON-*.md |
Neutron service runbooks |
docs/runbooks/RB-CINDER-*.md |
Cinder service runbooks |
docs/runbooks/RB-GLANCE-*.md |
Glance service runbooks |
docs/runbooks/RB-SWIFT-*.md |
Swift service runbooks |
docs/runbooks/RB-HEAT-*.md |
Heat service runbooks |
docs/runbooks/RB-HORIZON-*.md |
Horizon service runbooks |
Cross-References
| Resource |
Purpose |
skills/methodology/nasa-se/SKILL.md |
SE lifecycle phase context -- runbooks map to Phase E (Operations & Sustainment) per SP-6105 SS 5.4-5.5 |
skills/methodology/ops-manual-writer/SKILL.md |
Procedure format alignment -- runbooks follow compatible format with operations manual procedures |
skills/methodology/doc-verifier/SKILL.md |
Automated verification methods for runbook accuracy against running infrastructure |
docs/filesystem-contracts.md |
Output location contracts for docs/runbooks/ directory |
| NASA SP-6105 SS 5.3 |
Product Verification process -- runbooks as verification artifacts for operational procedures |
| NPR 7123.1 SS 3.2 Process 9 |
Product Transition -- runbooks satisfy operational handoff requirements |
1---2name: runbook-generator-33description: Guidance for generating OpenStack runbooks with dual task/symptom indexing following NASA procedure standards. Use when creating incident response procedures, operational runbooks, or troubleshooting guides that must be verified against running infrastructure.4---5
6# Runbook Generator
7
8This skill guides agents producing runbook library content for the GSD OpenStack Cloud Platform. Runbooks provide step-by-step procedures indexed by both task (what you want to do) and symptom (what went wrong), following the NASA procedure format from SP-6105 SS 5.3 (Product Verification) and the operational handoff requirements of NPR 7123.1 Process 9 (Product Transition).
9
10Runbooks differ from operations manual procedures in scope and intent. Operations manual procedures cover planned, routine activities (health checks, upgrades, backups). Runbooks cover reactive activities (incident response, troubleshooting, failure recovery) and operational tasks that may be performed under time pressure.
11
12## Runbook Entry Format
13
14Every runbook entry follows the standard format defined in the project vision (Section 2.3 of gsd-openstack-nasa-vision.md):
15
16```
17RUNBOOK: RB-{SERVICE}-{NNN} -- {TITLE}
18SE Phase Reference: NPR 7123.1 SS {section}
19Last Verified Against: {OpenStack release version}, {YYYY-MM-DD}
20Verification Method: {automated / manual / both}
21
22PRECONDITIONS
23 1. {System state required before starting}
24 2. {Access level or credentials needed}
25 3. {Related services that must be available}
26
27PROCEDURE
28 Step 1: {Exact command or action}
29 Expected: {What you should see}
30 If not: {Go to step N / escalate to {role} / see RB-{SERVICE}-{NNN}}
31
32 Step 2: {Exact command or action}
33 Expected: {What you should see}
34 If not: {Recovery action}
35
36 Step N: ...
37
38VERIFICATION
39 1. {How to confirm the procedure resolved the issue}
40 2. {Service health check command and expected output}
41 3. {Monitoring metric that should return to normal}
42
43ROLLBACK
44 1. {How to undo changes if the procedure made things worse}
45 2. {Steps to restore previous state}
46 3. {Confirmation that rollback succeeded}
47
48RELATED RUNBOOKS
49 - RB-{SERVICE}-{NNN}: {Title} -- {When to use instead}
50 - OPS-{SERVICE}-{NUMBER}: {Title} -- {Related ops manual procedure}
51```
52
53### Runbook ID Format
54
55- Pattern: `RB-{SERVICE}-{NNN}`
56- SERVICE: Uppercase service name (KEYSTONE, NOVA, NEUTRON, CINDER, GLANCE, SWIFT, HEAT, HORIZON, KOLLA, GENERAL)
57- NNN: 3-digit sequential number per service, starting at 001
58- Cross-service runbooks use GENERAL prefix
59- Examples: `RB-NOVA-001`, `RB-KEYSTONE-003`, `RB-GENERAL-005`
60
61## Dual Indexing System
62
63Runbooks are indexed two ways so operators can find the right procedure regardless of their starting context. An operator who knows what they want to do uses the task index. An operator responding to an incident uses the symptom index.
64
65### Task Index
66
67The task index organizes runbooks by operational intent. Categories follow the operational lifecycle:
68
69**DEPLOY** -- Initial setup and infrastructure expansion
70- Initial deployment (single-node)
71- Initial deployment (multi-node)
72- Add compute node
73- Add storage node
74- Add network node
75
76**OPERATE** -- Day-to-day operational tasks
77- Create project and users
78- Configure networking for project
79- Launch instance from image
80- Attach block storage
81- Create and restore backup
82- Apply security update
83- Perform rolling upgrade
84
85**MONITOR** -- Scheduled observation and assessment
86- Daily health check
87- Weekly capacity review
88- Monthly security audit
89- Quarterly performance baseline
90
91The task index file lives at `docs/runbooks/task-index.md`. Each entry links to the corresponding runbook by RB ID.
92
93### Symptom Index
94
95The symptom index organizes runbooks by failure observation. Operators start here when something is broken and they need to diagnose the cause.
96
97**INSTANCE WON'T LAUNCH**
98- Check Nova scheduler logs for placement failures
99- Verify hypervisor resources (vCPU, RAM, disk)
100- Check Neutron port allocation
101- Verify Glance image availability and format
102- Check Keystone authentication and service catalog
103
104**NETWORK UNREACHABLE**
105- Verify OVS/OVN bridge status and flows
106- Check Neutron DHCP agent status
107- Verify security group rules allow traffic
108- Check floating IP allocation and association
109- Trace packet path through SDN layer
110
111**STORAGE UNAVAILABLE**
112- Check Cinder volume service status
113- Verify backend connectivity (LVM/Ceph/NFS)
114- Check iSCSI/NFS target status
115- Verify volume attachment state in Nova
116- Check disk space on storage nodes
117
118**AUTHENTICATION FAILED**
119- Verify Keystone service status and endpoints
120- Check token expiration and Fernet key rotation
121- Verify service catalog endpoint URLs
122- Check TLS certificate validity and chain
123- Verify RBAC policy files and project scoping
124
125The symptom index file lives at `docs/runbooks/symptom-index.md`. Each entry links to one or more runbooks that address the symptom.
126
127### Index Requirements
128
1291. Every runbook must appear in at least one task index category.
1302. Every runbook must be discoverable from at least one symptom index entry.
1313. A single runbook may appear under multiple symptoms (e.g., a Keystone troubleshooting runbook appears under both AUTHENTICATION FAILED and INSTANCE WON'T LAUNCH).
1324. Index entries include the runbook ID, title, and a one-line description of when to use it.
133
134## Runbook Categories by Service
135
136Each OpenStack service requires runbook coverage for its most common failure modes and operational tasks. This list defines the minimum runbook set per service.
137
138### Keystone (Identity)
139- Token issuance failures (expired Fernet keys, clock skew)
140- Service catalog problems (missing endpoints, wrong URLs)
141- RBAC failures (policy misconfiguration, project scoping errors)
142- Federation issues (IdP connectivity, assertion mapping)
143
144### Nova (Compute)
145- Instance launch failures (scheduler, image, network, resource)
146- Scheduling problems (host aggregate, availability zone, placement)
147- Hypervisor issues (libvirt connectivity, resource reporting)
148- Live migration (pre-check, execute, troubleshoot failures)
149
150### Neutron (Networking)
151- Network connectivity loss (OVS/OVN bridge, flow rules)
152- DHCP failures (agent down, port binding, namespace issues)
153- Floating IP issues (allocation exhaustion, association state)
154- Security group problems (rule conflicts, default deny)
155- OVS/OVN issues (bridge status, flow tables, controller connectivity)
156
157### Cinder (Block Storage)
158- Volume creation failures (backend capacity, driver errors)
159- Attachment issues (iSCSI/NFS target, multipath, Nova coordination)
160- Backend connectivity (LVM health, Ceph cluster status, NFS mount)
161- Snapshot problems (consistency groups, backend limitations)
162
163### Glance (Image Service)
164- Image upload failures (format validation, backend storage full)
165- Format conversion issues (raw to qcow2, image properties)
166- Metadata problems (property inheritance, visibility settings)
167
168### Swift (Object Storage)
169- Container access issues (ACL misconfiguration, token scoping)
170- Replication problems (ring consistency, replicator status)
171- Quota issues (account/container quotas, rate limiting)
172
173### Heat (Orchestration)
174- Stack creation failures (template validation, dependency resolution)
175- Template validation errors (HOT syntax, resource type support)
176- Resource dependency issues (circular references, ordering)
177
178### Horizon (Dashboard)
179- Dashboard access issues (memcached sessions, Apache config)
180- Session problems (timeout, cookie domain, CSRF token)
181- Panel errors (service catalog discovery, API version mismatch)
182
183## Naming Convention
184
185Consistent naming ensures runbooks are findable and sortable.
186
187### ID Structure
188
189```
190RB-{SERVICE}-{NNN}
191
192SERVICE = KEYSTONE | NOVA | NEUTRON | CINDER | GLANCE | SWIFT | HEAT | HORIZON | KOLLA | GENERAL
193NNN = 001, 002, 003, ... (3-digit sequential per service)
194```
195
196### Rules
197
1981. Each service maintains its own number sequence starting at 001.
1992. Cross-service runbooks (affecting multiple services) use the GENERAL prefix.
2003. Numbers are never reused. If a runbook is deprecated, its number is retired.
2014. Runbook files are named by ID: `docs/runbooks/RB-NOVA-001.md`, `docs/runbooks/RB-GENERAL-003.md`.
202
203### Number Allocation Ranges
204
205| Service | Range | Example |
206|---------|-------|---------|
207| KEYSTONE | RB-KEYSTONE-001 through RB-KEYSTONE-099 | RB-KEYSTONE-001 |
208| NOVA | RB-NOVA-001 through RB-NOVA-099 | RB-NOVA-015 |
209| NEUTRON | RB-NEUTRON-001 through RB-NEUTRON-099 | RB-NEUTRON-003 |
210| CINDER | RB-CINDER-001 through RB-CINDER-099 | RB-CINDER-007 |
211| GLANCE | RB-GLANCE-001 through RB-GLANCE-099 | RB-GLANCE-002 |
212| SWIFT | RB-SWIFT-001 through RB-SWIFT-099 | RB-SWIFT-004 |
213| HEAT | RB-HEAT-001 through RB-HEAT-099 | RB-HEAT-001 |
214| HORIZON | RB-HORIZON-001 through RB-HORIZON-099 | RB-HORIZON-005 |
215| KOLLA | RB-KOLLA-001 through RB-KOLLA-099 | RB-KOLLA-010 |
216| GENERAL | RB-GENERAL-001 through RB-GENERAL-099 | RB-GENERAL-001 |
217
218## Verification Integration
219
220Runbooks connect to the verification pipeline to ensure accuracy against running infrastructure.
221
222### Verification Classification
223
224Each runbook specifies whether its verification is automated, manual, or both:
225
226| Type | Meaning | Doc-Verifier Role |
227|------|---------|-------------------|
228| Automated | Verification commands can be extracted and run by doc-verifier | doc-verifier executes verification section commands and compares output |
229| Manual | Verification requires human judgment or physical access | doc-verifier flags as manual-only; human must confirm |
230| Both | Some steps automated, some require human judgment | doc-verifier runs automated steps and flags manual steps for review |
231
232### Verification Tracking
233
2341. **Last-verified date** tracks when the runbook was confirmed against a running system. Stored in the runbook header.
2352. **System version** records which OpenStack release the runbook was verified against.
2363. **Unverified runbooks must carry a visible warning** at the top of the entry:
237
238```
239WARNING: UNVERIFIED RUNBOOK
240This runbook has not been verified against the current system version.
241Last verified: {date} against {version}.
242Current system: {version}.
243Execute each step with extra caution and verify results manually.
244```
245
2464. **Verification cadence:** All runbooks should be re-verified after any OpenStack upgrade or major configuration change.
247
248## Output Location
249
250All runbook files are written to `docs/runbooks/` following the filesystem contracts:
251
252| File | Content |
253|------|---------|
254| `docs/runbooks/task-index.md` | Task-organized runbook index (DEPLOY, OPERATE, MONITOR) |
255| `docs/runbooks/symptom-index.md` | Symptom-organized runbook index (failure categories) |
256| `docs/runbooks/RB-KEYSTONE-*.md` | Keystone service runbooks |
257| `docs/runbooks/RB-NOVA-*.md` | Nova service runbooks |
258| `docs/runbooks/RB-NEUTRON-*.md` | Neutron service runbooks |
259| `docs/runbooks/RB-CINDER-*.md` | Cinder service runbooks |
260| `docs/runbooks/RB-GLANCE-*.md` | Glance service runbooks |
261| `docs/runbooks/RB-SWIFT-*.md` | Swift service runbooks |
262| `docs/runbooks/RB-HEAT-*.md` | Heat service runbooks |
263| `docs/runbooks/RB-HORIZON-*.md` | Horizon service runbooks |
264
265## Cross-References
266
267| Resource | Purpose |
268|----------|---------|
269| `skills/methodology/nasa-se/SKILL.md` | SE lifecycle phase context -- runbooks map to Phase E (Operations & Sustainment) per SP-6105 SS 5.4-5.5 |
270| `skills/methodology/ops-manual-writer/SKILL.md` | Procedure format alignment -- runbooks follow compatible format with operations manual procedures |
271| `skills/methodology/doc-verifier/SKILL.md` | Automated verification methods for runbook accuracy against running infrastructure |
272| `docs/filesystem-contracts.md` | Output location contracts for `docs/runbooks/` directory |
273| NASA SP-6105 SS 5.3 | Product Verification process -- runbooks as verification artifacts for operational procedures |
274| NPR 7123.1 SS 3.2 Process 9 | Product Transition -- runbooks satisfy operational handoff requirements |