问题标签 [terraform-state]

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 回答
44 浏览

terraform - 是否可以访问 terraform 远程状态下未声明为输出的所有资源

我正在尝试从 terraform 远程状态获取一些引用,并注意到terraform state资源/数据和使用terraform_remote_state数据对象之间的一些差异。

例如,我有一个 terraform 模块,它创建了一个没有输出的 AWS 托管目录。在该模块中,我可以看到状态中的所有资源 - 例如terraform state show aws_directory_service_directory.ad,给我有关目录的详细信息 - 目录 ID、DNS 服务器地址等。

如果我然后创建一个新模块并添加一个terraform_remote_state数据对象,我将无法访问目录的任何属性 -data.terraform_remote_state.ad.outputs为空。在这个新模块中,如果我只有远程状态数据对象,并且应用(没有资源),然后使用terraform console和显示data.terraform_remote_state.ad,它看起来像:

所以资源处于状态,但不能直接访问。这是预期的行为吗?有什么方法可以访问远程状态下的资源,还是我需要将属性添加到输出中并使用data.terraform_remote_state.ad.outputs.whatever_attributes

0 投票
0 回答
78 浏览

gitlab - 刷新状态时出错:无法读取远程状态:意外 EOF - GitLab 上的 Terraform 状态

我正在尝试配置 GitLab 以保存 terraform 状态。

我将我的main.tf文件设置如下:

我只能第一次运行terraform initterraform planterrafrom apply

状态已正确保存在我的 GitLab 项目中(在 Infrastructure-> Terraform 下)。

但是我尝试重新运行时terraform init收到此错误:

注意:我的 terraform 文件不在主根项目中,而是在子文件夹中: /<Name-Project>/<terraform-folder>/main.tf

如何解决我的问题?

更新: 现在我在运行时收到此错误terraform plan

这些是地形日志:

0 投票
0 回答
34 浏览

terraform - Terraform - azurerm_frontdoor_custom_https_configuration - '给定的键未标识此集合值中的元素'

  • 这段代码以前工作过,我要做的就是添加新的前端端点、路由规则、后端池
  • 我尝试只分享我认为相关的代码片段,但如果您需要遗漏一些关键信息,请告诉我

这个问题让我困扰了几天,无论我尝试了什么,我似乎都无法理解这个错误。就像它从变量中索引或搜索不存在但已经存在类似 6 的东西,现在我正在添加另一个。

我担心这个前门代码已经有一段时间没有运行了,并且有些事情已经搞砸了。特别是考虑到此资源随附的 TF 文档中的所有警报 - https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/frontdoor_custom_https_configuration

已经有一段时间了,但 AzureRM 版本已经经历了几次更新——可能从以前的 2.58 到现在的 2.58。我想我也不知道如何验证/查看状态文件并确保其正确 - 即使查看 2.58 升级也注意到它只是令人困惑。

想法?

错误

主文件

模块 main.tf

版本.tf

变量.tf

0 投票
0 回答
6 浏览

azure-rm - 如何将 azure 远程状态文件后端导入 tf 云

我们已经使用 terraform 来创建我们的基础设施,并且我们正在将状态文件存储在 azure 远程后端。现在我们有了 terraform cloud,我们想将现有的状态文件迁移到 terraform cloud。有人可以告诉我们将现有状态文件迁移到 terraform 云的过程吗?在 terraform 文档中,我只看到从本地到 terraform 的迁移步骤,但没有看到远程后端到 terraform 云的迁移步骤。

或者是否有任何程序可以让 tf 云工作区使用现有的 azure 后端?

谢谢,桑托什

0 投票
0 回答
29 浏览

terraform - 一个用于增量基础设施配置的 terraform 状态文件

我正在处理一个场景,我有一个增量基础设施配置(我每周在 Azure 上构建 VM)并且我想为所有这些构建维护一个状态文件。

我将状态文件存储在 Azure 存储帐户中,并根据需要配置后端。遇到的问题是,当我构建我的第一个 VM 时,会创建一个状态文件,当我尝试构建第二个 VM 时,引用(后端)相同的状态文件,并在我的 Main.tf 文件中进行一些配置更改,(我知道这是实际的 terraform行为) terraform 计划状态旧的 VM 将被替换。

我也尝试过参数,生命周期块,在销毁之前创建,但没有运气。我只看到一个将多个资源块添加到我的 main.tf 的选项。

有什么方法可以实现在我的 Main.tf (Parameterized) 中创建多个 VM 的引用(每周一次)一个具有一个资源块的状态文件?

下面是创建资源组的简单配置(main.tf)

如果我执行上述配置,将创建一个资源组并使用上述资源更新状态文件

如果我在不添加新资源块的情况下按如下方式更新配置,理想情况下 terraform 会替换旧资源(将删除资源组 vmrg 并创建 vmrg1)。即使我添加参数也是同样的情况

有没有办法在不添加新资源块的情况下创建资源?

在我的情况下创建资源组 vmrg1 而不删除 vmrg ?在创建 vmrg 时使用相同的状态文件?