使用Terratest编写测试涉及Go内置的包测试机制。测试会创建真实的基础设施组件,如服务器,并在上面部署应用程序,然后使用Terratest工具验证预期行为。 在测试结束时,Terratest会取消应用部署,使用Go语言的defer机制清理资源,类似JUnit的teardown方法。 Terratest可以测试已有的基础设施部署而不是每次从头开始创建吗? 面向Consul、Vault和Nomad的Terraform模块都有Terratest测试示例。 Terratest的其他特性包括针对CI系统的变通方案,这类系统需要短期运行的测试,对于需要长期运行的基础设施测试可能无效。Terratest还提供了像测试预期错误这样的典型测试抽象。 为了加速开发过程中的测试,Terratest可以把测试分解成“阶段”,而阶段可以使用环境变量跳过。
.#9 Use terratest for testing with Kubernetes.#51 作为 VM Ingress,丰富服务注册/发现场景,比如,支持 Consul 等注册中心; 支持 VM
最后是在语言提供的能力上对三方 cli 和 API 进行封装的测试库,如 Ruby 的 AWSpec,Go 的 Terratest 等。 比如 Terratest 只适合验证 infra,如果需要想做冒烟测试,还要另起炉灶。 如果确实有必要集成测试库,也可以按需集成。
单元测试(Unit Testing)undefined使用 Terratest(Go 编写)或 pytest-terraform(Python)等框架,对 IaC 模块进行隔离测试。
Terratest Terratest 仍是我们感兴趣的基础设施测试工具。 它是一个 Golang 库,用来简化基础设施代码的自动化测试编写。 通过基础设施即代码的工具,例如 Terraform,你可以创建真实的基础设施组件(如服务器、防火墙或负载均衡器),在它们之上部署应用程序,并使用 Terratest 验证预期的行为。 在测试结束后,Terratest 可以取消应用的部署并清理资源。 我们的团队们认为这种测试基础设施组件的方式有助于提供对基础设施即代码的自信。
我现在在 Apache APISIX Ingress controller 项目中使用它,辅助用户进行升级检查; terratest 这是一个使用 Go 开发的通用测试框架,支持多种配置的测试,包括 Helm
幸运的是,有一些测试框架,比如Terratest for Terraform,允许我们编写实际的测试。越早尝试用它覆盖所有内容,就越能从中受益,基础设施发生的意外问题也就越少。
Terratest可用于实时测试基础设施。 Kyverno, Kubewarden, Gatekeeper 独联体扫描 kube-bench, CIS-CAT Pro, Prowler IaC 扫描 Checkov, Terrascan, KICS, Terratest
本期雷达Terraform相关的内容重点包括Terratest(用于测试基础设施代码),以及GoCD的新提供商(可以使用Terraform配置GoCD)。
描述 for_each展开 使用for_each来展开Terraform模块,提高配置的灵活性 splat表达式 简洁的迭代表达式,用于提取列表中所有元素的特定属性,如var.list[*].id Terratest 10.4 测试基础设施即代码 Gruntworks开发的Terratest是最流行的Terraform测试框架之一。它已经被开发出来很久了,并且有大量的社区支持。
本期雷达的内容重点包括Terratest(用于测试基础设施代码),以及GoCD的新提供商(可以使用Terraform配置GoCD)。