我对 Terraform 基础架构进行了简单的回归测试。此 Terraform 基础结构包含许多资源,包括 Azure Keyvault。由于启用软删除已成为 Azure Keyvault 的默认设置,因此会导致自动回归出现问题,其中以 CI/CD 方式创建、断言和销毁资源。
基本的 Terratest 看起来像这样
testpackage test
import (
"testing"
"github.com/gruntwork-io/terratest/modules/terraform"
"github.com/stretchr/testify/assert"
)
// An example of how to test the simple Terraform module in examples/basic using Terratest.
func TestTerraformBasicExample(t *testing.T) {
// Test specific variables
projectName := "automated0test"
// Assertion variables
expectedText := "testOutputName"
terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{
// The path to where our Terraform code is located
TerraformDir: "../../examples/basic",
// Variables to pass to our Terraform code using -var options
Vars: map[string]interface{}{
"project": projectName,
},
// Disable colors in Terraform commands so its easier to parse stdout/stderr
NoColor: true,
})
// At the end of the test, run `terraform destroy` to clean up any resources that were created
defer terraform.Destroy(t, terraformOptions)
// This will run `terraform init` and `terraform apply` and fail the test if there are any errors
terraform.InitAndApply(t, terraformOptions)
// Run `terraform output` to get the values of output variables
actualTextExample := terraform.Output(t, terraformOptions, "static_storage_account_name")
// Verify we're getting back the outputs we expect
assert.Equal(t, expectedText, actualTextExample)
}
我收到以下错误:
TestTerraformBasicExample 2021-02-25T09:41:17Z retry.go:99: Returning due to fatal error: FatalError{Underlying: error while running command: exit status 1;
Error: purging Secret "placeholder" (Key Vault "https://placeholder"): keyvault.BaseClient#PurgeDeletedSecret: Failure responding to request: StatusCode=409 --
Original Error: autorest/azure: Service returned an error. Status=409 Code="Conflict" Message="Secret is currently being deleted." InnerError={"code":"ObjectIsBeingDeleted"}