

# OPS05-BP03 使用配置管理系统
<a name="ops_dev_integ_conf_mgmt_sys"></a>

 使用配置管理系统来实现和跟踪配置更改。这些系统可以减少手动过程引起的错误，并减少部署更改的工作量。 

 静态配置管理在初始化资源时设置值，这些值在资源的生命周期内预期会保持一致。这样的例子包括为实例上的 Web 或应用程序服务器设置配置，或者定义 AWS 服务的配置（在 [AWS 管理控制台](https://docs.aws.amazon.com/awsconsolehelpdocs/index.html) 内或者通过 [AWS CLI](https://aws.amazon.com/cli/)）。 

 动态配置管理在初始化时设置值，这些值在资源的生命周期内可能或预期会发生变化。例如，您可以设置一个功能切换，通过配置更改在代码中激活功能，或者在意外事件期间更改日志详细级别以捕获更多数据，然后在意外事件完成后更改回来，避免不再必要的日志记录及其相关费用。 

 在 AWS 上，您可以使用 [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) 持续监控 AWS 资源配置 - [跨账户和区域](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html)。这有助于您跟踪其配置历史记录，了解配置更改会如何影响其他资源，并使用 [AWS Config 规则](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) 和 [AWS Config 合规包](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html)根据预期或所需的配置审计它们。 

 如果您在 Amazon EC2 实例、AWS Lambda、容器、移动应用程序或物联网设备上运行的应用程序具有动态配置，则可以使用 [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) 在您的环境中配置、验证、部署和监控它们。 

 在 AWS 中，您可以使用像 [AWS 开发人员工具](https://aws.amazon.com/products/developer-tools/) （例如，[AWS CodeCommit](https://aws.amazon.com/codecommit/)、 [AWS CodeBuild](https://aws.amazon.com/codebuild/)、 [AWS CodePipeline](https://aws.amazon.com/codepipeline/)、 [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)和 [AWS CodeStar](https://aws.amazon.com/codestar/)）这样的服务来构建持续集成/持续部署（CI/CD）管道。 

 **期望的结果：** 可以作为持续集成、持续交付（CI/CD）管道的一部分进行配置、验证和部署。通过监控来验证配置是否正确。这样可以最大限度地减少对最终用户和客户的任何影响。 

 **常见反模式：** 
+  您手动更新整个队列中的 Web 服务器配置，由于更新错误，许多服务器变得没有响应。 
+  手动更新应用程序服务器队列需要花费很长时间。在变更过程中，如果配置不一致会导致意外行为发生。 
+  有人更新了您的安全组，您的 Web 服务器无法访问了。如果不知道发生了哪些变更，您需要花费大量时间来调查问题，导致恢复时间延长。 
+  未经验证即通过 CI/CD 将预生产配置推送到生产环境中。您让用户和客户接触到不正确的数据和服务。 

 **建立此最佳实践的好处：** 采用配置管理系统可以减少更改及对其进行跟踪的工作量，还可以降低手动程序导致错误的频率。配置管理系统为治理、合规性和监管要求提供了保障。 

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

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

 配置管理系统用于跟踪和实施对应用程序和环境配置的更改。配置管理系统还用于减少手动流程引起的错误，使配置更改可重复且可审核，并减少工作量。 

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

1.  确定配置负责人。 

   1.  让配置负责人了解任何合规性、治理或监管需求。 

1.  确定配置项和可交付成果。 

   1.  配置项是受您的 CI/CD 管道内的部署影响的所有应用程序和环境配置。 

   1.  可交付成果包括成功标准、验证和要监控的内容。 

1.  根据您的业务需求和交付管道，选择配置管理工具。 

1.  考虑使用加权部署，例如用于重大配置更改的金丝雀部署，以尽可能减少错误配置的影响。 

1.  将您的配置管理集成到 CI/CD 管道中。 

1.  验证所有推送的更改。 

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

 **相关最佳实践：** 
+  [OPS06-BP01 针对不成功的更改制定计划](ops_mit_deploy_risks_plan_for_unsucessful_changes.md) 
+  [OPS06-BP02 测试部署](ops_mit_deploy_risks_test_val_chg.md) 
+  [OPS06-BP03 采用安全部署策略](ops_mit_deploy_risks_deploy_mgmt_sys.md) 
+  [OPS06-BP04 自动测试和回滚](ops_mit_deploy_risks_auto_testing_and_rollback.md) 

 **相关文档：** 
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)
+ [AWS 登录区加速器 ](https://aws.amazon.com/solutions/implementations/landing-zone-accelerator-on-aws/)
+ [AWS Config](https://aws.amazon.com/config/)
+ [ 什么是 AWS Config？ ](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html)
+  [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) 
+ [ 什么是 AWS CloudFormation？ ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+  [AWS 开发人员工具](https://aws.amazon.com/products/developer-tools/) 

 **相关视频：** 
+ [AWS re:Invent 2022 - Proactive governance and compliance for AWS workloads ](https://youtu.be/PpUnH9Y52X0?si=82wff87KHXcc6nbT)
+ [AWS re:Invent 2020：使用 AWS Config 实现合规性即代码 ](https://youtu.be/m8vTwvbzOfw?si=my4DP0FLq1zwKjho)
+ [ Manage and Deploy Application Configurations with AWS AppConfig](https://youtu.be/ztIxMY3IIu0?si=ovYGsxWOBysyQrg0)