问题标签 [infrastructure-as-code]

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

terraform - 无法下载 terraform 模块

我在 terraform/terragrunt 中定义了我的应用程序的基础架构。为了能够在不同的环境中部署完整的应用程序,我为整个应用程序创建了一个模块。但是我不断得到:

无法真正找出问题所在

0 投票
2 回答
3645 浏览

postgresql - 使用 Terraform 进行 AWS RDS IAM 身份验证

我正在尝试正确设置我的基础设施,没有密码或密钥。AWS RDS 可以选择这样做,让用户(应用程序)使用生成的令牌进行身份验证。

但是,在文档中,其中一个步骤(这个)需要在 Postgres 数据库中运行查询以创建用户并授予他特定权限:

我想用 Terraform 配置整个堆栈。我已经查找了一些“hacks”以在 RDS 实例化之后运行查询(此处),方法是:

或者:

但是它们都需要创建主密码并以某种方式将其传递到“脚本”中。

是否有可能用 Terraform 干净地做到这一点,没有硬编码的密码被传递?

我很想配置数据库并仅启用具有正确访问权限的特定 EC2/ECS 实例,而我的 git 存储库中没有任何密码。

0 投票
2 回答
110 浏览

terraform - 你如何为 IAC 设置你的仓库?

在设置 Terraform 存储库时,您将如何将基础架构设置为代码存储库?如果您在职责分离仍然占主导地位的环境中工作怎么办?

你会为多项服务做回购吗?

例如帐户回购然后在那里你有一个网络回购,iam回购,服务回购,安全回购等?

0 投票
1 回答
2481 浏览

terraform - 使用 Terraform 时从实例获取 EC2 Windows 密码

使用 terraform 时,我正在努力从几个新的 ec2 实例中获取密码。一直在阅读一些帖子,并认为我有它但没有得到任何地方。

这是我的配置:

设法清除所有语法错误,但现在运行时出现以下错误:

0 投票
1 回答
1872 浏览

kubernetes - Terraform 污点资源命名约定 (v0.11.13)

我的模块abc包含一个通过https://github.com/helm/charts/tree/master/stable/redis-haredis-ha的 helm 赞美部署到 Kubernetes的实例。我想要这个资源。当我看到资源列为:taintterraform state list

  • module.abc.module.redis.helm_release.redis-ha[3]

我从https://github.com/hashicorp/terraform/issues/11570的理解是该taint命令早于state list. 从 v0.12 开始,它将遵循相同的命名约定。

不幸的是,我无法升级到 v0.12。

我该如何处理 v0.12 之前taint的资源?module.abc.module.redis.helm_release.redis-ha[3]

我很高兴污染整个redis-ha部署。

0 投票
0 回答
50 浏览

file - 如何在 Terraform 提供的资源(Windows 或 Linux 机器)上写入文件

我想知道是否有一种方法可以将文件写入 Terraform 提供的 Linux 或 Windows 机器。例如,我想将一个文件写入 D:\temp\myfile.txt,其中应该包含我可以从 main.tf 传递的信息。

我尝试使用以下

但是当我运行 Terraform init 或 terraform plan 时,我收到以下错误

0 投票
1 回答
1537 浏览

terraform - terraform_remote_state 数据块语法

我正在使用 Terraform 进行 AWS 多账户设置。我有一个创建多个子帐户的主帐户,在子帐户中我引用主帐户的远程状态来检索输出值。

terraform plan命令在测试 main.tf 中针对此配置失败:

出现以下错误:

从我从文档中可以看出,这应该可以工作……我做错了什么?

0 投票
3 回答
5922 浏览

amazon-web-services - 如何部署特定的 tf 文件(Terraform)

我的 terraform 根目录中有 3 个 .tf 文件:

  • vpc.tf
  • 子网.tf
  • 实例.tf
  • 连同运行 terraform init 后的 .terraform 目录

我只想部署运行类似的 vpc.tf:

但它不起作用(我收到一个 Go 错误:“zip:不是有效的 zip 文件”)。如果我只是跑

它将尝试在所有 3 个 terraform 文件(vpc.tf、subnets.tf 和 instances.tf)中应用所有配置,这不是我想要的。似乎让它工作的方法是,拥有一个完全不同的文件夹,然后运行类似的东西

哪个有效。这种方法的问题在于,如果我在 vpc/ 文件夹中有 2 个或更多 terraform 文件,我会再次回到第一个问题。似乎解决方案是在特定文件夹中拥有特定资源,但这似乎并不干净,因为我可以预见,如果基础设施增长,我最终会得到几个包含一些 terraform 文件的文件夹。所以问题是:

有没有办法“terraform 应用”特定的 terraform 文件,而忽略文件夹中的所有其他文件?我错过了关于 terraform 的一些基本知识吗?

0 投票
1 回答
8822 浏览

amazon-dynamodb - 如何在 CloudFormation 中使用基础架构即代码实施 DynamoDB 全局二级索引

我正在使用基础架构即代码在 CloudFormation 中实施 GSI。我想要做的就是使用这个表来记录主 DynamoTable 中的条目数。这是主要故事的样子:

我不需要原始表中的键,我想要的只是为新 GSI 创建一个新的 HASH 键,它会告诉我我正在跟踪的计数来自哪个表,即上面的表。

以下是我迄今为止尝试实施 GSI 的方式:

但是,我得到的错误如下:

An error occurred: CaseRecords - Property Projection cannot be empty..

当我包含我曾经的 PROJECTION 时,仅userId来自原始表的只是为了跟踪每个用户在原始表中的条目计数,我尝试以下操作:

但是,这也会返回错误:

An error occurred: CaseRecords - Property AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes.

如何使用 CloudFormation 模板在 Dynamo 中正确实现全局二级索引,以便在原始表中记录条目数????

谢谢。

更新

如果有人想知道这就是我能够部署它的方式。这不是一个完美的解决方案,但它让我可以跟踪并计算项目表中的条目:

更新 #2 - 失败

根据下面@Pedro Arantes 提供的信息,我正在尝试使用我想要使用的属性定义来实现 GSI。然而,这也失败了。下面是实施,这是我使用的 AWS Doc 的链接:AWS GSI Doc,这是失败的实施:

我怎样才能让它只与NonKeyAttributes我在AttributeDefinitions???

0 投票
1 回答
2235 浏览

typescript - 在 Pulumi 中,存在 pulumi.Output.apply 的等价物,但要转换 pulumi.Input 值?

我正在 Typescript 中开发一个名为 CopyPostgresql 的 Pulumi ComponentResource。

CopyPostgreSql 是一个 Kubernetes 作业,它将源 Postgresql 数据库的内容流式复制到目标 Postgresql 数据库。CopyPostgreSql 的选项包括属性 source 和 target。两者都是 DatabaseInput 类型。

所以,我想使用端口作为来自另一个组件的另一个属性的值,但另一个属性的类型是 Input<string>。

如何将 Input< 数字 > 类型的值应用(或转换)到 Input< 字符串 >?一般来说:在 Pulumi 中,存在 pulumi.Output.apply 的等价物,但要转换 pulumi.Input 值?