问题标签 [terraform-cloud]

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

terraform - 引用 Terraform 中的其他模块资源

我的 Terraform Cloud git 项目中有这样的层次结构:

所有主main.tf文件都包含带有子文件夹的模块定义:

/main.tf

/aws/main.tf

/aws/security-rules/main-tf

/aws/vms/main-tf

然后我定义了这个安全规则。

/aws/security-rules/sec-rule1/main-tf

而且我想从一个或多个 VM 中引用它,但我不知道如何通过资源 ID(或名称)进行引用。我使用简单的名称而不是参考。

/aws/vms/vm1/main-tf

我想使用通过 name 或 ID 引用的安全规则(和更多东西),因为它会更加一致。此外,当我创建一个新的安全规则并同时创建一个 VM 时,Terraform OpenStack 提供者计划它没有错误,但是在应用它时,会产生错误,因为 VM 是先创建的,它没有发现尚未创建新的安全规则。

我怎样才能做到这一点?

0 投票
2 回答
1249 浏览

amazon-web-services - Terraform Cloud / Enterprise - 如何使用 AWS 代入角色

我想将 AWS Assume Roles 与 Terraform Cloud / Enterprise 一起使用

在 Terraform Open Source 中,您通常只需执行 Assume Role,利用 CLI 上的 .aws/Credential Profile(初始身份验证)并执行 Assume Role:

问题是,对于 Terraform Enterprise 或 Cloud,您无法引用配置文件,因为不可变的基础架构不会在其目录中包含该文件。

Terraform Cloud/Enterprise 需要将访问密钥 ID 和秘密访问密钥设置为变量,以便其基础设施可以通过其管道执行 Terraform RUN,并对您想要在其中预置的任何 AWS 账户进行身份验证。

所以问题是:如何利用 AWS 账户的访问密钥 ID 和秘密访问密钥执行 AWS 担任角色,并使用“操作”:“sts:AssumeRole”,策略?

我认为,以下方法可行,但是 Terraform 正在通过 AWS 凭据配置文件凭据为具有 sts:AssumeRole 策略的帐户进行初始身份验证

Terraform 是否可以查看 access_key 和 secret_key 来确定在尝试担任角色时要使用的 AWS 账户,而不是使用 AWS 凭证配置文件?

为了允许 Terraform Cloud/Enterprise 获得新的 Assume Role 会话令牌,它需要使用 Access_key 和 Secret_key,告诉它哪个 AWS 账户具有 sts:assume 角色,链接到要预置的成员 AWS 账户,以及不是 AWS 信用档案

谢谢

0 投票
1 回答
5088 浏览

terraform - 使用环境变量时未找到 AWS Provider 的有效凭证源

我有一个可以在本地运行的 terraform 脚本,但是当我发布到 Terraform Cloud 时,出现如下错误:

我在其他成功运行的部署中以相同的方式设置了相同的变量,但它似乎并没有通过提取凭据。

任何有关故障排除的指导将不胜感激

变量设置

0 投票
0 回答
94 浏览

github - 为什么 Terraform Registry 找不到来自 GitHub 组织的公共存储库?

因此,我的 GitHub 组织已授予 Terraform 注册表“无私人访问权限”。

Terraform Registry 的 OAuth 授权页面的屏幕截图

那么,为什么会导致 Terraform 看不到我组织的公共存储库?

Terraform Registry 的屏幕截图显示列表中没有存储库

我认为 Terraform Registry 应该能够从 GitHub 组织访问公共存储库,而无需提供私有访问。

为什么 Terraform Registry 找不到来自 GitHub 组织的公共存储库?

0 投票
2 回答
364 浏览

terraform - 跨 terraform 工作区共享 Google Cloud Platform 项目

我正在尝试使用远程存储(Terraform Cloud)设置一个 terraform 项目,该项目将主要提供 Google Cloud Platform 资源。作为基础架构的一部分,我需要 3 个环境,这些环境将使用 terraform 工作空间进行管理。每个环境在我的存储库中都有自己的目录,在每个环境中我将定义环境特定的资源。目录结构类似于:

但是,每个环境都需要使用相同的 Google Cloud Platform 项目。我通常会在最根main.tf文件中使用以下内容创建项目:

所以我的问题是我如何只创建一次项目并在环境之间共享它?在每个环境中执行以下main.tf操作不起作用:

google_project.project.project_id找不到资源。大概是因为该terraform plan environments/{staging,production}命令不知道查找目录树。

我考虑过使用一个模块,但鉴于上面的代码使用了一个随机 id,这不会导致为每个环境创建一次项目,而是使用不同的 id?


编辑:另一个想法是创建一个core工作区,其中包含 Google Cloud Platform 项目的设置以及任何其他共享资源。然后每个环境将包含一个data指向core工作区远程状态的块:

这是一个可接受的解决方案吗?

0 投票
2 回答
1034 浏览

terraform - Terraform 云:导入现有资源

我正在使用terraform cloud来管理 AWS 中预置的基础设施的状态。

我正在尝试使用terraform import导入当前不受 terraform 管理的现有资源。

我知道terraform import这是一个仅限本地的命令。我已经设置了一个工作区引用,如下所示:

AWS 凭证是在远程云工作区中配置的,但 terraform 似乎没有从工作区引用 AWS 凭证,而是回退尝试使用指向不同 AWS 账户的本地凭证。我希望 Terraform 在运行时通过引用工作区中的变量来使用凭据terraform import

当我注释掉本地配置的凭据时,出现错误:

我本来希望 terraform 使用工作区中配置的凭据。

请注意,当我直接从云控制台运行 plan/apply 命令时,terraform 能够正确使用凭据。

0 投票
0 回答
62 浏览

terraform - 如何在 terraform cloud 中从 git 加载文件?

有没有办法将 lambda aka javascript 文件从 github 加载到 terraform cloud?我尝试了很多方法,例如:local-exec 执行 curl 来拉取文件。HTTP数据->但是这个不能像js文件一样使用它:

Terraform 云上似乎没有任何效果。即使 local-exec 执行 curl 的第一个选项适用于本地但不适用于云。有没有人这样做过?

0 投票
0 回答
110 浏览

terraform - Windows 和 Linux 上的 terraform-provider-local(Terraform Cloud Worker VM)

在我的 Windows 机器istioctl.exe上,我的 PATH 上有。当我运行它时local-exec,它可以工作。

对于 Terraform Cloud,我首先下载istioctl并将其放在${path.module}/tmp. 但我需要将local-exec以上内容更改为./istioctl version --remote=false;.

对于 TFC,有没有办法添加istioctl到,PATH所以我不必使用./?

0 投票
2 回答
161 浏览

terraform - 无法同时创建多个 Cosmos MongoDB 集合

尝试同时创建两个集合会引发此错误:

从响应日志以及该apply阶段发生错误的事实来看,我怀疑它与 API 有关。

样品:


解决方法

一次创建一个集合可以避免这个问题。

0 投票
0 回答
92 浏览

terraform - terraform cloud - 不存在具有给定名称的提供程序

根据文档,我已将“k8s”提供程序添加到我的 Git 存储库中

然而,在 Terraform Cloud 上,它仍然失败,没有提供给定名称的提供者 可能导致这种情况?