问题:在生产环境中,像Terraform这样的基础设施-as-Code(IaC)工具被广泛用于管理和提供基础设施。
然而,一个共同的问题是,IaC配置中宣布的状态与基础设施的实际状态之间的漂移。
这种漂移可以由控制台的手动改变,直接被应用到资源上的热补丁,或者由手调取的缩放值而发生.
如果未被发现,漂移会导致配置不一致、安全脆弱,并最终导致停用。
技术分类 为了了解漂移是如何发生的,让我们考虑一个简单的Terraform配置,用于AWS EC2实例: 在这个例子中,Terraform配置宣布了一个具有特定AMI和实例类型的AWS EC2实例.
然而,如果工程师手动将 AWS 控制台中的实例类型更改为 . , 基础设施的实际状态将会与声明状态相去甚远 。
这种漂移可能难以探测,特别是在大型和复杂的基础设施部署中。
修补/ 模式 为了探测IaC环境中的漂流,可以使用自动漂流探测工具和技术.
一种方法是使用Terraform的内置指令来将申报状态与基础设施的实际状态进行比较.
例如: 或者,可以使用Terragrunt或Terraform Institution等第三方工具来检测漂移并强制遵守所申报状态.
为防止漂移首先发生,必须建立无责文化,并鼓励工程师仅通过IaC配置来进行改变.
这可以通过对IaC变化进行自动化测试和验证,以及提供有关IaC最佳做法的明确文献和培训来实现。
钥匙外卖 每天在每个环境中进行自动漂移检测,并将申报状态和实际状态之间的任何差异作为失败测试处理,以防止配置不一致,并确保基础设施的可靠性.