问题标签 [terratest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
352 浏览

azure - Azure Keyvault 清除问题

我对 Terraform 基础架构进行了简单的回归测试。此 Terraform 基础结构包含许多资源,包括 Azure Keyvault。由于启用软删除已成为 Azure Keyvault 的默认设置,因此会导致自动回归出现问题,其中以 CI/CD 方式创建、断言和销毁资源。

基本的 Terratest 看起来像这样

我收到以下错误:

0 投票
0 回答
65 浏览

terraform - 在 Terratest 执行期间需要参数“value”

我确实有一个带有以下代码的 terraform 子模块

在正常的 terraform 执行期间,它按预期工作。但在 terratest 期间go test,它会发出The argument "value" is required, but no definition was found. 我通过 和 添加测试值terraform.Options作为默认值,但它仍然发出相同的错误。

0 投票
0 回答
108 浏览

integration-testing - 如何将 go 的 TestMain 与 terratest 一起使用?

我想使用go testterratest库对具有约 10 个不同组件(pod、服务、负载均衡器、组件之间的链接等)的集群进行集成测试。用于构建基础设施的工具是terraformkuberneteshelm。建设基础设施大约需要。10 分钟,这样我就不想每次测试都单独做。我的解决方案建议使用在测试套件中设置测试基础设施的模式,TestMain(*testing.M)并在测试套件中对测试进行分组,例如TestAuth(*testing.T)TestMonitoring(*testing.T)等。现在,我需要调用terratest诸如terraform.InitAndApply(*testing.T, terraformOptions)测试套件之外的组件,这显然对我来说是不可能的.

我尝试了以下方法:

由于这是建立综合测试基础设施的自然方式,我错过了什么?

我看到所有terratest样本(https://github.com/gruntwork-io/terratest/tree/master/test)都使用一个测试套件、阶段和子测试,我不想这样做,因为它放弃了大部分的特征go testing。这真的是完成这项工作的唯一方法吗?

0 投票
0 回答
26 浏览

terratest - 如何使用 terraTest 列出所有现有 VM

擅长:新手

有没有办法使用 terratest 列出所有现有的 VM 名称?我确实尝试运行以下代码,但显然该参考用于创建 VM,但我希望列出所有现有 VM 而无需创建新的。有人可以帮我吗?

注意:我尝试运行以下代码仅用于学习目的,但尚未成功。

来源https ://github.com/gruntwork-io/terratest/blob/master/modules/azure/compute.go

0 投票
0 回答
352 浏览

terratest - 将 terratest 与单独的 backend.hcl 文件一起使用

我成功地使用了 terratest,但是自从切换到远程后端(详细信息在单独的backend.hcl文件中定义)后,我遇到了麻烦。

情况:我的main.tf开始是这样的:

我的backend.hcl

然后在使用 terraform 时,我喜欢terraform init -backend-config=./backend.hcl. 到目前为止,一切都很好。使用 terratest 时,它现在会抱怨关于organization未定义的其他错误。这似乎是合理的,因为organizationmain.tf.

一种解决方法是包含backend.hclin的内容main.tf,但这不适合我们的架构,它只需要进行编辑main.tf以进行测试。

有没有办法告诉 terratest 包括backend.hcl何时 terraform 初始化?

编辑1:我看到有一种方法可以将后端信息添加到terraformOptions,但是我无法正确格式化这些:

如果我能让它工作,这将提供一种解决方法,因为我可以添加一些代码来读取backend.hcl和注入信息,但是工作区格式不正确,我对它的外观有点迷茫。

编辑 2:好的,现在我发现编辑 1 中提到的解决方法不起作用,因为工作区是一个块值,目前不支持。该问题自 2019 年以来一直开放...... https://github.com/hashicorp/terraform/issues/21830

因此,如果 terratest 支持文件中的后端配置,那将非常有帮助。

0 投票
1 回答
205 浏览

azure - Azure terratest - 构建约束排除所有 Go 文件

当我运行 pkg/mod/github.com/gruntwork-io/terratest/test/azure ...

go test -v -run TerraformAzureKeyvaultExample

我收到以下错误:

包 github.com/gruntwork-io/terratest/test/azure:构建约束排除所有 Go 文件....

有没有其他人遇到过这个问题?如何禁用此功能以便我可以实际运行 Azure terratest?

-泰国-

0 投票
1 回答
2095 浏览

azure - Azure 管道 - terratest - 错误:请运行“az login”来设置帐户

我在 Azure Pipeline 中面临一个(接缝)recurent pbm 来运行 terratest。

虽然资源创建得很好,但当我调用 azure.ResourceGroupExists 函数(或其他任何 azure.xxx 函数)时,出现以下错误:

关于一些论坛,这似乎是一些配置问题,我遵循所有这些推荐的配置:

  • 为 terraform 设置环境变量: -- ARM_CLIENT_ID -- ARM_CLIENT_SECRET -- ARM_SUBSCRIPTION_ID -- ARM_TENANT_ID
  • 在 terratest 的 go 任务之外设置 AzureCli 任务中的 az 登录,因为 terratest 似乎需要 2 个不同的身份验证:(为此 az 登录使用服务主体客户端 ID)
  • 对于 Assert 测试,需要 ARM_CLIENT 身份验证
  • 对于 Exists 测试,需要服务连接认证

这里是我关注的链接:

波纹管我的管道代码,其中 TF_VAR_ARM_CLIENT_SECRET 是管道的秘密变量

咆哮我的去 terratest 代码:

我确定我在传递参数时遗漏了一些东西,在 Azure 中创建和销毁资源后,我总是遇到以下错误:

请帮忙。

0 投票
0 回答
61 浏览

azure - 即使 azure 的预期和实际 VM 大小相同,Terratest 断言也显示不等于

在对 terraform 代码执行 terratest 时,它成功地在 Azure 上创建了基础架构,对我编写的测试用例进行验证,然后在验证后销毁所有内容。在验证测试用例时,断言。即使预期和实际 VM 大小相同,Equal 也显示 NOT EQUAL(两者的类型也返回相同:compute.VirtualMachineSizeTypes)。

0 投票
1 回答
62 浏览

visual-studio-code - VS Code 不允许我保存 go 测试文件

我正在尝试使用 VS Code 保存文件。

更新

我想我应该问一下,不管代码是什么,当你按下 Ctrl S 时,你可以强制 VS Code 保存文件,而不是编辑你的文件然后保存它?

====

VS Code 在这里报告了一个问题:

并输出:

当我 Ctrl S 时,VS Code 删除该行。

这可能是一个问题,但我希望能够保存和测试它。

我猜:

  1. 如何保存文件?

(注意我可以做到这一点,vim但想知道你如何用 VS Code 做到这一点)

0 投票
1 回答
718 浏览

go - Run Terraform as a Go Library?

I've been using Terratest to test all my go modules and absolutely love it as a means for running terraform and interacting with terraform infrastructure through the go programming language. However, terratest is designed to be integrated with the go test framework, not as a Go application of its own, which would be my goal.

Doing a quick search to find terraform go libraries I found Terranova does this, but is outdated. Is there a go library that someone has created currently that's similar to Terratest? Or is there a good way to run terraform as a go library instead of as a wrapper for the commands?