
# OPS04-03 基础设施即代码
基础设施即代码（IaC）是指使用代码而不是手动流程来管控基础设施的能力。 应用程序环境都需要许多基础设施组件，例如操作系统、数据库连接和存储。 开发人员必须定期设置、更新和维护基础设施，以开发、测试和部署应用程序。 手动管理基础设施既耗时又容易出错，尤其是在大规模管理应用程序时。
- **风险等级**
  高
  
- **关键策略**
  使用声明式工具：与命令式工具相比，声明式工具是部署和管理 IaC 的更好的整体选择。声明性工具对其定义文件使用更简单的语法，仅定义部署完成后所需的环境状态。命令式工具需定义达到所需最终状态所需的步骤，因此文件可能比声明性文件复杂得多。声明性定义文件还有助于减少维护命令式代码（例如部署脚本）的技术债务，这些技术债务会随着时间的推移而增加。
  使用云平台工具和其他经过行业验证、集成到平台中的工具：云平台提供的工具可以使 IaC 的部署变得简单直接。利用这些工具而不是开发自己的解决方案。云平台包含满足您大多数需求的内置功能，并且由平台提供商不断更新，随着平台的发展而变得更加有用。
  标准化模块化方案：模块可以使基础设施部署可重复，标准化有助于确保模块的构建能够满足特定目标。建议使用模块来封装复杂的配置或资源组合。此外，在开发新模块时非敏感场景可以适当使用开源模块。
  标准化人工步骤：如果存在与部署和维护相关的人工步骤，要尽可能减少这类活动。在运维指南和标准操作程序中，清楚地记录人工步骤，并实现标准化，以确保安全、一致地执行任务。
  回收闲置资源：由于配置管理工具及其限制等原因，有时 IaC 工具无法自动删除资源。例如，假设需要从虚拟机迁移到 PaaS 服务，而 IaC 工具没有删除闲置资源的逻辑。如果忘记手动删除这些资源，这些资源可能会成为孤立资源。为了处理这些场景，需要标准化扫描闲置资源并明确删除策略。
  
- **相关云服务和工具**
  [资源编排服务 RFS](https://www.huaweicloud.com/product/aos.html)
  
 
