基础设施即代码:原则、优势与实践
1. 基础设施即代码的核心原则
1.1 幂等性(Idempotency)
在基础设施即代码中,幂等性是一个重要原则。有些基础设施即代码将可重复性作为原则,即运行相同的自动化操作能产生一致的结果,但幂等性有更严格的要求,运行自动化操作应使基础设施资源达到相同的最终状态。
例如,编写一个网络脚本,首次运行时配置接口并重启交换机,保存为版本 1。几个月后再次运行该脚本,交换机重启导致关键应用断开连接。实际上网络接口已经配置过,不需要再次重启。于是创建版本 2 的脚本,添加条件“if”语句,在重启交换机前检查接口是否已配置,再次运行时就不会断开应用。
幂等性原则确保可以重复运行自动化操作而不影响基础设施,除非更改配置或出现偏差。如果基础设施配置或脚本具有幂等性,多次重新运行自动化操作不会影响资源的状态或可操作性。
为确保幂等性原则,可以检查脚本和配置的可重复性,在运行自动化操作前,包含一些条件语句来检查配置是否符合预期。这样能在需要时应用更改,避免影响基础设施可操作性的副作用。设计具有幂等性的自动化操作可降低风险,鼓励包含逻辑以保留系统的最终预期状态。
1.2 可组合性(Composability)
可组合性意味着可以混合和匹配任何一组基础设施组件,无论使用何种工具或配置,并且能够更新单个配置而不影响整个系统。这促进了模块化和基础设施依赖的解耦。
例如,为“hello - world.com”应用创建基础设施,所需的最小资源包括服务器、负载均衡器、服务器的专用网络、负载均衡器的公共网络、各种路由规则和域名等。可以从头编写配置,但如果有预先构建的模块