问题标签 [terraform-remote-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 投票
2 回答
661 浏览

terraform - 在 Terraform 远程后端使用变量

对于 Terraform 远程后端,是否有一种方法可以使用变量来指定组织/工作区名称而不是那里的硬编码值?

Terraform 文档 似乎也没有提及任何相关内容。

0 投票
1 回答
213 浏览

terraform - 从 S3 远程状态导入 terraform 工作区

我正在使用 terraform 部署到多个 AWS 账户,并且每个账户都有自己的一组环境。我正在使用 terraform 工作区和 s3 远程状态。当我在这些帐户之间切换时,其中一个帐户的 terraform 工作区列表现在为空。有没有办法从 s3 远程状态同步工作区的状态?请指教。谢谢,

我试图创建工作区,但是当我运行 terraform plan 时,它确实会创建所有资源,即使它们已经存在于远程状态。

0 投票
1 回答
279 浏览

terraform - 是否可以将 terraform 远程状态包装到模块中并从状态中输出变量?

在我的 terraform 代码中,我经常有多个“terraform_remote_state”来从不同的路径(网络、安全组)获取远程状态。所以为了避免这样的多个块:

我想我会定义一个这样的模块:

以后像这样使用它:

但是运行会导致如下错误消息:

我正在使用 terraform 0.11.3

0 投票
1 回答
52 浏览

amazon-web-services - 如何使用 terraform 读取 tfstate 中的第二个块?

我在 s3 上有一个远程状态,我不知道如何访问 tfstate json 文件的第二个块。

我的 tfstate 看起来像这样:

我可以访问它这个代码:

但输出

什么都不显示

申请完成!资源:添加 0 个,更改 0 个,销毁 0 个。

输出:

tfstate = {}

我相信这是因为这个 tfstate 中有两个 json 块,而 terraform 读取了第一个是空的,所以我问如何读取第二个?

0 投票
1 回答
986 浏览

terraform - 使用来自另一个项目的 Terraform 状态输出

我最近将 Terraform 从 11.11 升级到 12.24,运行 0.12upgrade 后,访问远程 terraform_state 输出不再有效。

我得到的错误是:这个对象没有名为“subnet_id”的属性

这是我的配置:

Repo 1(创建网络、子网等)

output.tf 的内容(从上面):

在上面的 repo 中运行 Terraform 输出,给我以下输出(修改后的 id):

Repo 2(创建计算平台)

计算的 main.tf 的内容:

作为一种附加方法,当我使用具有以下内容的 terraform 文件输出内容时:

然后我得到以下输出:

任何想法如何访问存储在远程状态中的那些值,或者我做错了什么?

0 投票
1 回答
1278 浏览

terraform - 如何让 Terraform 中的 Docker 提供程序在尝试连接之前等待地址可用?

我在 Terraform 中有以下资源:

这依赖于在ipv4_address连接到 docker 机器之前要知道的值。在供应另一个资源之前,该值是未知的:

当我运行时terraform plan,我收到以下错误:

错误:初始化 Docker 客户端时出错:无法解析 docker 主机 ``

在 docker.tf 第 1 行,在提供者“docker”中:1:提供者“docker”{

这似乎ipv4_address是空的,因为 docker 插件在配置之前尝试连接到 docker 机器。我如何告诉它在尝试连接之前等待机器配置好?


我试过的一件事:

当我这样做时,我收到此错误:

错误:提供程序块中的保留参数名称

在 docker.tf 第 4 行,在提供者“docker”中:4:depends_on = [

提供者参数名称“depends_on”保留供 Terraform 在未来版本中使用。

但是阅读更多内容depends_on,我认为这不是解决方案。

0 投票
1 回答
7345 浏览

terraform - Terraform 设置 - 远程状态 s3 - InvalidParameter 验证错误

环境

Terraform v0.12.24 + provider.aws v2.61.0

在高山容器中运行。

背景

我有一个运行正常的基本 terraform 脚本,但现在我正在扩展它并尝试配置远程 (S3) 状态。

terraform.tf:

桶存在,表也存在。我已经用 terraform 创建了它们,并通过控制台确认了它们。

问题

当我跑步时,terraform init我得到:

我试过的

terraform fmt没有报告任何错误并愉快地重新格式化我的terraform.tf文件。我也尝试将这节移到我的main.tf,以防terraform.tf文件由于某种原因被忽略。我得到了完全相同的结果。

我也尝试在没有 alpine 容器的情况下从 aws 中的 ubuntu ec2 实例运行它,但我得到了相同的结果。

我最初在密钥中有 terraform 文件的名称。我已经删除了(谢谢),但它并没有帮助解决问题。

此外,我刚刚尝试在旧图像中运行它:hashicorp/terraform:0.12.17但我收到类似的错误:

我猜我在这里做了一些非常愚蠢的事情,但我看不出它是什么。

0 投票
1 回答
401 浏览

postgresql - 使用 postgres 构建远程后端

我计划使用远程后端作为 postgres 而不是 s3 作为企业标准。

当我们使用 postgres 远程后端时,当我们运行 terraform init 时,我们必须提供特定于该 terraform 文件夹的模式,因为后端仅支持一个表,并且将使用工作空间名称创建新记录。

我现在卡住了,因为我有 50 个项目,每个项目都有 2 层,维护在不同的文件夹中,那么我们需要在 postgres 中创建 100 个模式。此外,在自动配置中处理如此多的模式也很困难。

我们可以处理类似于 S3 的事情吗,我们有一个用于所有项目的存储桶,并且在同一个存储桶中有多个条目,具有在每个 terraform 脚本中指定的不同键。我们能否根据每个 terraform 文件夹的后端配置中提供的键对所有项目和多个表/记录使用单一模式。

0 投票
3 回答
2718 浏览

amazon-web-services - Terraform_Remote_State 错误:此对象没有参数、嵌套块或名为“vpc_id”的导出属性

在 AWS 中使用 Terraform (TF) 并在尝试使用 terraform_remote_state 调用 vpc_id 时遇到错误。我们分割了网络的不同部分以减轻状态滑移。但是,它还需要与基础设施的每个单独部分的状态文件(即 vpc、sgs、角色等的状态文件)进行交互。当我尝试从 S3 存储桶中保存的状态文件中获取 vpc_id 时,我收到以下错误:

这是我在 main.tf 文件中的 terraform_remote_state 调用:

这是同一个 main.tf 中的调用

这是 vpc 目录中的 outputs.tf 文件:

这是 tf_remote_state 声明:

最后,这是来自 vpc 目录的 backend.tf 信息:

我尝试过使用 output.vpc_id (如上),没有输出(在 tf 0.12 更新后需要输出),使用 outputs.vpc_id.value (因为 statefile 使它看起来像这样的结构),以及使用输出 [1] .value.. 它给出了不同的错误,但它们都失败了。帮助将不胜感激。

0 投票
0 回答
151 浏览

azure - 如何在另一个 azure 订阅中使用 terraform 状态

我正在使用 Terraform 部署一个 azure 基础架构。terraform 状态将存储在与主部署订阅不同的订阅中。我在提供者声明中使用别名。我的地形代码如下:

我的 terraform 状态应该以别名存储在订阅中。

我怎样才能做到这一点?