问题标签 [terraform-provider]

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 投票
1 回答
74 浏览

go - 如何在 terraform 提供程序中测试验证功能

我已经为需要在自定义 terraform 提供程序中验证的字段编写了一些更复杂的验证逻辑。当然,我可以测试这些是单元测试,但这还不够;为什么如果我忘记实际应用验证器?

所以,我需要实际使用 terraform config 并让提供者这样做是正常的、自然的事情。

基本上,我希望它会出错。该文档似乎表明我应该对输出进行正则表达式匹配。但这不可能是正确的;看起来超级脆。有人能告诉我这是怎么做到的吗?

这段代码显然不起作用。而且,很多研究都没有给出答案。

0 投票
0 回答
33 浏览

terraform - Terraform 自定义提供程序覆盖加密值的差异

我第一次创建自定义提供程序,所以如果这是一个愚蠢的问题,我很抱歉。

其中一种资源是获取 Kubernetes 机密并将其加密为密封机密,然后将其推送到 Git 存储库。

我注意到这个值的 Terraform 差异存在问题。在 ReadContextfunc 中,我从 Git 获取请求的资源,然后使用Setfunc from设置值ResourceData。问题是这个值在 Git 中是加密的,并且将它与当前值进行比较main.tf总是会触发更新,因为该值是明文的。

我已经尝试使用CustomizeDiffin schema.Resource,但我无法按照我想要的方式工作。

main.tf解决此问题的一种方法是通过加密值并将其与存储在 Git 中的值进行比较来覆盖 Terraform 差异。

这是可能的,还是我误解了这个问题?

0 投票
1 回答
65 浏览

terraform - 正确定义 cyrilgdn/postgresql 提供程序的 Terraform 问题

我遇到了与此处完全相同的问题Terraform 尝试加载旧的已失效提供程序,并且那里发布的解决方案对我不起作用。

问题是我在 terraform 配置中定义:

但是terraform init进程总是尝试下载hashicorp/postgresql,最后还是找不到。

我当前的 terraform 版本是:

windows_amd64 上的 Terraform v1.0.6

我确实尝试了很多并使用资源参数“提供者”来明确设置所有资源的提供者,但即使这样我也没有找到办法。

任何人都可以再次在这里提供帮助或向我发布此提供商的工作示例吗?

0 投票
1 回答
406 浏览

terraform - 在 terraform 中为 azure-devops 和 mysql 提供程序使用第三方提供程序的问题

在执行 terraform init 时出错,按照 terraform 官方文档,我正在尝试通过 terraform 创建 azure-pipeline 并为其创建了模块,但无法初始化,如果我直接在 .tf 文件中传递它,它的工作正常,但是添加到模块时,terraform init 命令本身失败。

0 投票
2 回答
262 浏览

attributes - Terraform - 如何使用导出的属性?

我正在学习 terraform,在下面的示例中,第一部分放置了一个 VM 并返回该 VM 的 id。第二部分向 vm 添加了一个额外的磁盘。我必须在 virtual_machine_id 参数中输入一个 id,但我不知道如何(cloudstack_instance.worker[$name].id 不起作用)。有人可以提示吗?

0 投票
1 回答
111 浏览

templates - Terraform k8sraw 提供程序错误:产生了一个意外的新值,但在创建模板时现在不存在

我们的 terraform 部署最近失败了,出现错误:

k8sraw 提供者不是 terraform 官方提供者,它是从 github 获得的,该项目的 url 在: https ://github.com/nabancard/terraform-provider-kubernetes-yaml

该提供商在很长一段时间内都可以正常工作,直到一周前,我们发现它从 2021 年 10 月 15 日开始出现上述错误而失败。

我们使用的 terraform 版本是 0.12.24

高级感谢帮助。

我有使用 k8sraw 的示例代码:

  1. 主文件
  1. 变量.tf
  1. 模板/test-workflow.yml.tpl
  1. 模板/测试模板.yml.tpl
  1. 变量/test.tfvars
  1. 后端/后端.tfvars
  1. 地形命令:
0 投票
1 回答
177 浏览

go - 去安装 github.com/dmacvicar/terraform-provider-libvirt@latest - 显示错误

我正在尝试使用 Terraform 在 KVM 上配置 VM。安装步骤之一是下载并安装提供程序购买命令:

去安装 github.com/dmacvicar/terraform-provider-libvirt@latest

但它错误:

提供命名包的模块的 go.mod 文件包含一个或多个替换指令。它不能包含会导致它被解释为不同于主模块的指令。

我没有找到解决方案,有人遇到过吗?谢谢你

0 投票
1 回答
43 浏览

terraform - 如何在自定义 terraform 提供程序资源中允许有序列表?

我有一个自定义 terraform 提供程序,其资源将列表作为其输入之一。

这是有问题的列表:https ://github.com/volterraedge/terraform-provider-volterra/blob/main/volterra/resource_auto_volterra_http_loadbalancer.go#L3501

当我声明列表时,它需要设置为多个块,如下所示:

相反,我希望能够像下面这样声明它:

这会导致以下错误:

为什么我不能使用有序列表,如何允许使用它?

这个问题policies是因为它Type: schema.TypeList,应该是一个TypeSet还是其他一些对象?

0 投票
1 回答
29 浏览

terraform - Terraform 自定义提供程序使用工厂进行测试

我正在创建一个新的提供者,但我对提供者工厂有一些疑问。

我正在关注 terraform-provider-scaffolding 所以在 provider_test.go 我有以下内容:

然后在资源测试文件中,我希望访问 Provider 能够使用我的 api 客户端删除创建的资源。我正在尝试以下操作:

但是 provider.Meta() 总是为零。我如何访问在提供程序中配置的我的 api 客户端?

测试运行良好,资源已创建,但我无法销毁 CheckDestroy 中配置的函数内部资源。

编辑:我注意到我误解了 CheckDestroy 键的含义。测试自动运行删除资源操作。这样就解决了我的问题。但我坚持这个问题,我怎样才能访问我的 api 客户端?

谢谢

0 投票
1 回答
74 浏览

terraform - Terraform dynamic/conditional resource creation

I'm using terraform with the libvirt provider and generate 4 guests (index: 0,1,2,3) using this snippet:

Now I want to add a conditional statement, that the first two workers get GPUs assigned. So in python pseudo code sth. like

From the libvirt provider documentation I saw that I have to use XML and xslt which I already checked with a simpler script and that works.

Now I tried it in this more complex setup with conditional statements as well as dynamic blocks but I cannot get it working. Currently it looks like this:

I feel like dynamic blocks might be the wrong approach because it is looping through all workers, but I also didn't get it working with the conditional statement appraoch.

Any help is appreciated - thanks!