Gần đây chúng tôi đã mở Terratest , con dao quân đội Thụy Sĩ của chúng tôi để thử nghiệm mã cơ sở hạ tầng.
Hôm nay, có lẽ bạn đang kiểm tra tất cả mã cơ sở hạ tầng của mình theo cách thủ công bằng cách triển khai, xác thực và không triển khai. Terratest giúp bạn tự động hóa quá trình này:
- Viết bài kiểm tra trong Go.
- Sử dụng các trình trợ giúp trong Terratest để thực thi các công cụ IaC thực sự của bạn (ví dụ: Terraform, Packer, v.v.) để triển khai cơ sở hạ tầng thực (ví dụ: máy chủ) trong môi trường thực (ví dụ: AWS).
- Sử dụng các trình trợ giúp trong Terratest để xác thực rằng cơ sở hạ tầng hoạt động chính xác trong môi trường đó bằng cách thực hiện các yêu cầu HTTP, các lệnh gọi API, kết nối SSH, v.v.
- Sử dụng người trợ giúp trong Terratest để triển khai mọi thứ vào cuối bài kiểm tra.
Dưới đây là một thử nghiệm ví dụ cho một số mã Terraform:
terraformOptions := &terraform.Options {
// The path to where your Terraform code is located
TerraformDir: "../examples/terraform-basic-example",
}
// This will run `terraform init` and `terraform apply` and fail the test if there are any errors
terraform.InitAndApply(t, terraformOptions)
// At the end of the test, run `terraform destroy` to clean up any resources that were created
defer terraform.Destroy(t, terraformOptions)
// Run `terraform output` to get the value of an output variable
instanceUrl := terraform.Output(t, terraformOptions, "instance_url")
// Verify that we get back a 200 OK with the expected text
// It can take a minute or so for the Instance to boot up, so retry a few times
expected := "Hello, World"
maxRetries := 15
timeBetweenRetries := 5 * time.Second
http_helper.HttpGetWithRetry(t, instanceUrl, 200, expected, maxRetries, timeBetweenRetries)
Đây là các thử nghiệm tích hợp và tùy thuộc vào những gì bạn đang thử nghiệm, có thể mất 5 - 50 phút. Nó không nhanh (mặc dù sử dụng Docker và các giai đoạn thử nghiệm , bạn có thể tăng tốc một số thứ) và bạn sẽ phải làm việc để làm cho các bài kiểm tra đáng tin cậy, nhưng nó rất đáng thời gian.
Kiểm tra repo Terratest cho các tài liệu và rất nhiều ví dụ về các loại mã cơ sở hạ tầng khác nhau và các thử nghiệm tương ứng cho chúng.