本篇翻译与讲解 terraform 官方 blog 对於 test terraform 的建议
课程内容与代码会放在 Github 上: https://github.com/chechiachang/terraform-30-days
赛後文章会整理放到个人的部落格上 http://chechia.net/
测试是程序码开发的一环,对於程序码的品质影响巨大,这里不提测试的概念。总之,测试非常重要。
以 terraform 而言,有许多时候都会需要测试
那应该如何测试 terraform?
将团队选择测试策略,依照成本(时间成本与费用)排序,会是个阶层金字塔
基於这个基础想法,分别讨论如何测试 terraform
terraform fmt -check
terraform validate
实作有几个选项
检查 module 的 input 与 input format
terraform 在 variable 中提供 custom validation rule 的功能
variable "listener_rule_priority" {
type = number
default = 1
description = "Priority of listener rule between 1 to 50000"
validation {
condition = var.listener_rule_priority > 0 && var.listener_rule_priority < 50000
error_message = "The priority of listener_rule must be between 1 to 50000."
}
}
contract test 可以延伸,所有在 terraform apply 之前,针对 content / format / input / output 的检查都可以
整合测试针对 terraform apply 的结果做测试,也就是 terraform module 是否正确的产出 infrastructure
使用 terraform test framework
当 terraform apply 後,产生的 infrastructure,使用者是否能正常使用
这个层级的测试需要导入使用者的测试例,会需要 QA 团队协助
如何对 terraform 做 end-to-end test
End-to-End 通常会花费需多时间,但对於整体环境是非常必要的
要如何手动测试 terraform?
如果是 app,我们会手动测试其功能
回到 infrastructure,如何手动测试 infrastructure 的功能?
因此对 terraform 而言,针对嵾数做 variable validation 是十分有效的
笔者建议,做少少的努力就可以获得明显成效的方法
app 产品稳定的话,应该有 end-to-end test,善用 QA 团队既有的 end-to-end test
完成以上内容,已经满足一个『能够正常乘载 app 的 infra 的需求了』。当然,实务上只是满足需求不是终点,还有非常多可以调整优化的地方
为 terraform 额外写 integration test,可以进一步提升 module 品质,降低成本与提升效能
<<: Day11 AR安全帽 边骑车边滑手机(用声音) 给不想要乖乖骑车的你(前提是够有钱)
嗨大家好,真希望一天能有 48 小时,不然这主题都要分到四部曲了,没错,应该会有四部曲! 抱歉了! ...
基本型态阵列 Kotlin 已经有内建一些阵列物件,如 ByteArray、IntArray、Dou...
先自我介绍一下,本身是研发部门里的後端工程师,而此次是我第一次参加铁人赛,希望透过这次参加比赛,也增...
[DAY3]SQL的新手懒人笔记 (大写为内建语法) 21.ORDER BY可用来排序资料,如果是字...
大家好,我是乌木白,今天想和大家聊聊,如果在该如何去发问问题? 遇到问题该怎麽办? 在现今网路发达...