问题标签 [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.
terraform - 在 Terraform 远程后端使用变量
对于 Terraform 远程后端,是否有一种方法可以使用变量来指定组织/工作区名称而不是那里的硬编码值?
Terraform 文档 似乎也没有提及任何相关内容。
terraform - 从 S3 远程状态导入 terraform 工作区
我正在使用 terraform 部署到多个 AWS 账户,并且每个账户都有自己的一组环境。我正在使用 terraform 工作区和 s3 远程状态。当我在这些帐户之间切换时,其中一个帐户的 terraform 工作区列表现在为空。有没有办法从 s3 远程状态同步工作区的状态?请指教。谢谢,
我试图创建工作区,但是当我运行 terraform plan 时,它确实会创建所有资源,即使它们已经存在于远程状态。
terraform - 是否可以将 terraform 远程状态包装到模块中并从状态中输出变量?
在我的 terraform 代码中,我经常有多个“terraform_remote_state”来从不同的路径(网络、安全组)获取远程状态。所以为了避免这样的多个块:
我想我会定义一个这样的模块:
以后像这样使用它:
但是运行会导致如下错误消息:
我正在使用 terraform 0.11.3
amazon-web-services - 如何使用 terraform 读取 tfstate 中的第二个块?
我在 s3 上有一个远程状态,我不知道如何访问 tfstate json 文件的第二个块。
我的 tfstate 看起来像这样:
我可以访问它这个代码:
但输出
什么都不显示
申请完成!资源:添加 0 个,更改 0 个,销毁 0 个。
输出:
tfstate = {}
我相信这是因为这个 tfstate 中有两个 json 块,而 terraform 读取了第一个是空的,所以我问如何读取第二个?
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 文件输出内容时:
然后我得到以下输出:
任何想法如何访问存储在远程状态中的那些值,或者我做错了什么?
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
,我认为这不是解决方案。
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
但我收到类似的错误:
我猜我在这里做了一些非常愚蠢的事情,但我看不出它是什么。
postgresql - 使用 postgres 构建远程后端
我计划使用远程后端作为 postgres 而不是 s3 作为企业标准。
当我们使用 postgres 远程后端时,当我们运行 terraform init 时,我们必须提供特定于该 terraform 文件夹的模式,因为后端仅支持一个表,并且将使用工作空间名称创建新记录。
我现在卡住了,因为我有 50 个项目,每个项目都有 2 层,维护在不同的文件夹中,那么我们需要在 postgres 中创建 100 个模式。此外,在自动配置中处理如此多的模式也很困难。
我们可以处理类似于 S3 的事情吗,我们有一个用于所有项目的存储桶,并且在同一个存储桶中有多个条目,具有在每个 terraform 脚本中指定的不同键。我们能否根据每个 terraform 文件夹的后端配置中提供的键对所有项目和多个表/记录使用单一模式。
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.. 它给出了不同的错误,但它们都失败了。帮助将不胜感激。
azure - 如何在另一个 azure 订阅中使用 terraform 状态
我正在使用 Terraform 部署一个 azure 基础架构。terraform 状态将存储在与主部署订阅不同的订阅中。我在提供者声明中使用别名。我的地形代码如下:
我的 terraform 状态应该以别名存储在订阅中。
我怎样才能做到这一点?