

# OPS07-BP03 使用运行手册执行程序
<a name="ops_ready_to_support_use_runbooks"></a>

 A *运行手册* 是实现特定结果的书面流程。运行手册由某人为完成某件事而遵循的一系列步骤组成。早在航空发展的早期，运行手册便已用于运营。在云运营中，我们使用运行手册来降低风险并实现预期结果。简单而言，运行手册就是完成一项任务的核对清单。

 运行手册是运营工作负载的重要组成部分。从新团队成员入职到部署一个主要版本，运行手册都是一个成文的流程，无论谁使用它们，都能获得一致的结果。运行手册应发布在一个中央位置，并随着流程的发展而更新，因为更新运行手册是变更管理流程的一个关键组成部分。它们还应包括关于错误处理、工具、权限、异常和问题发生时上报的指导。 

 随着贵组织日益成熟，开始自动编写运行手册。从简短且经常使用的运行手册开始。使用脚本语言来实现步骤自动化或使步骤更容易执行。当您自动化前几本运行手册后，您将花时间自动化更复杂的运行手册。随着时间的推移，大多数运行手册应以某种方式实现自动化。 

 **期望结果：** 您的团队有一系列执行工作负载任务的分步指南。运行手册包含期望结果、必要的工具和权限，以及关于错误处理的说明。它们存储在一个中央位置并经常更新。 

 **常见反模式：** 
+  依靠记忆完成流程的每个步骤。 
+  手动部署更改而不使用核对清单。 
+  不同的团队成员执行相同的流程，但执行不同的步骤或取得不同的结果。 
+  让运行手册与系统更改和自动化不同步。 

 **建立此最佳实践的好处：** 
+  降低人工任务的错误率。 
+  以一致的方式执行操作。 
+  新的团队成员可以更早地开始执行任务。 
+  可以自动编写运行手册以减少工作量。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 中 

## 实施指导
<a name="implementation-guidance"></a>

 根据贵组织的成熟度级别，运行手册可以采用多种形式。它们至少应该包含一个分步文本文档。应明确指出期望结果。清楚地记录必要的特殊权限或工具。提供关于错误处理和出现问题时进行上报的详细指导。列出运行手册负责人，并将运行手册发布在一个中央位置。一旦运行手册编写完成，让您团队中的其他人运行它来进行验证。随着过程的发展，根据变更管理流程更新运行手册。 

 随着贵组织日益成熟，您的文本运行手册应实现自动化。使用诸如 [AWS Systems Manager 自动化之类的服务](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html)，您可以将纯文本转换为可针对您的工作负载运行的自动化功能。这些自动化功能可以根据事件的发生而运行，从而减轻维持工作负载的运营负担。

 **客户示例** 

 AnyCompany Retail 必须在软件部署期间执行数据库模式更新。云运营团队与数据库管理团队合作，构建了一个用于手动部署这些更改的运行手册。运行手册以核对清单的形式列出了流程中的每个步骤。其中有一节是关于出错时的错误处理。他们在内部 Wiki 上发布了该运行手册和其他运行手册。云运营团队计划在未来的冲刺阶段实现运行手册的自动化。 

## 实施步骤
<a name="implementation-steps"></a>

 如果您没有现有的文档存储库，那么版本控制存储库是开始构建运行手册库的绝佳场所。您可以使用 Markdown 构建运行手册。我们提供了一个示例运行手册模板，您可以用它开始构建运行手册。 

```
# Runbook Title ## Runbook Info | Runbook ID | Description | Tools Used | Special Permissions | Runbook Author | Last Updated | Escalation POC | |-------|-------|-------|-------|-------|-------|-------| | RUN001 | What is this runbook for? What is the desired outcome? | Tools | Permissions | Your Name | 2022-09-21 | Escalation Name | ## Steps 1.Step one 2.Step two
```

1.  如果您当前尚没有文档存储库或 Wiki，请在版本控制系统中创建一个新的版本控制存储库。 

1.  识别一个没有运行手册的流程。一个理想的流程是半定期执行的流程，步骤少，且故障影响小。 

1.  在文档存储库中，使用模板创建新的草稿 Markdown 文档。填写 `Runbook Title` 以及 `Runbook Info 下的必填字段`。 

1.  从第一步开始，填写运行手册的 `Steps` 部分。 

1.  将运行手册交给团队成员。让他们使用运行手册来验证这些步骤。如果有遗漏或需要澄清的地方，请更新运行手册。 

1.  将运行手册发布到您的内部文档存储区。发布后，告诉您的团队和其他利益相关者。 

1.  随着时间的推移，您将构建一个运行手册库。随着该库的增长，开始努力实现运行手册的自动化。 

 **实施计划的工作量级别：** 低。运行手册的最低标准是一个分步文本指南。实现运行手册自动化可能会增加实施工作量。 

## 资源
<a name="resources"></a>

 **相关最佳实践：** 
+  [OPS02-BP02 确定流程和程序所有者](ops_ops_model_def_proc_owners.md)：运行手册应该有一个负责人负责维护。 
+  [OPS07-BP04 根据行动手册调查问题](ops_ready_to_support_use_playbooks.md)：运行手册和行动手册彼此相似，但有一个关键区别：运行手册包含期望结果。在许多情况下，一旦行动手册确定了根本原因，就会触发运行手册。 
+  [OPS10-BP01 使用流程来管理事件、意外事件和问题](ops_event_response_event_incident_problem_process.md)：运行手册是良好的事件、意外事件和问题管理实践的一部分。 
+  [OPS10-BP02 针对每个提醒设置一个流程](ops_event_response_process_per_alert.md)：应使用运行手册和行动手册来响应警报。随着时间的推移，应自动进行这些响应。 
+  [OPS11-BP04 执行知识管理](ops_evolve_ops_knowledge_management.md)：维护运行手册是知识管理的一个关键部分。 

 **相关文档：** 
+ [利用自动化行动手册和运行手册实现卓越运营](https://aws.amazon.com/blogs/mt/achieving-operational-excellence-using-automated-playbook-and-runbook/) 
+ [AWS Systems Manager：使用运行手册](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-documents.html) 
+ [适用于 AWS 大型迁移的迁移行动手册 - 任务 4：改进迁移运行手册](https://docs.aws.amazon.com/prescriptive-guidance/latest/large-migration-migration-playbook/task-four-migration-runbooks.html) 
+ [使用 AWS Systems Manager Automation 运行手册解决运营任务](https://aws.amazon.com/blogs/mt/use-aws-systems-manager-automation-runbooks-to-resolve-operational-tasks/) 

 **相关视频：** 
+  [AWS re:Invent 2019：运行手册、事件报告和事件响应 DIY 指南（SEC318-R1）](https://www.youtube.com/watch?v=E1NaYN_fJUo) 
+  [如何在 AWS \$1 Amazon Web Services 上实现 IT 运营自动化](https://www.youtube.com/watch?v=GuWj_mlyTug) 
+  [将脚本集成到 AWS Systems Manager](https://www.youtube.com/watch?v=Seh1RbnF-uE) 

 **相关示例：** 
+  [AWS Systems Manager：自动化演练](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-walk.html) 
+  [AWS Systems Manager：从最新的快照运行手册中还原根卷](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-document-sample-restore.html)
+  [使用 Jupyter Notebook 和 CloudTrail Lake 构建 AWS 意外事件响应运行手册](https://catalog.us-east-1.prod.workshops.aws/workshops/a5801f0c-7bd6-4282-91ae-4dfeb926a035/en-US) 
+  [Gitlab - 运行手册](https://gitlab.com/gitlab-com/runbooks) 
+  [Rubix - 用于在 Jupyter Notebook 中构建运行手册的 Python 库](https://github.com/Nurtch/rubix) 
+  [使用 Document Builder 创建自定义运行手册](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-walk-document-builder.html) 
+  [Well-Architected 实验室：使用行动手册和运行手册自动完成操作](https://wellarchitectedlabs.com/operational-excellence/200_labs/200_automating_operations_with_playbooks_and_runbooks/) 

 **相关服务：** 
+  [AWS Systems Manager Automation](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) 