问题标签 [terraform]

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

amazon-web-services - Terraform:将 cloudwatch 日志订阅交付配置为 lambda?

我需要将我的 cloudwatch 日志发送到日志分析服务。

我一直在这里这里阅读这些文章,并手动完成,不用担心。

现在我正在尝试使用 Terraform(角色/策略、安全组、cloudwatch 日志组、lambda 以及从日志组触发 lambda)来自动化所有这些。

但我不知道如何使用 TF 来配置 AWS 以从 cloudwatch 日志中触发 lambda。

我可以通过执行以下操作(在 Lambda Web 控制台 UI 中)手动将两个 TF 资源链接在一起:

  • 进入 lambda 函数的“触发器”部分
  • 点击“添加触发器”
  • 从触发器类型列表中选择“cloudwatch logs”
  • 选择我要触发 lambda 的日志组
  • 输入过滤器名称
  • 将过滤器模式留空(意味着在所有日志流上触发)
  • 确保选择“启用触发器”
  • 点击提交按钮

完成后,lambda 将显示在 cloudwatch 日志控制台的订阅列中 - 显示为“Lambda (cloudwatch-sumologic-lambda)”。

我尝试使用以下 TF 资源创建订阅:

但它失败了:

aws_cloudwatch_log_subscription_filter.cloudwatch-sumologic-lambda-subscription: InvalidParameterException:destinationArn for vendor lambda cannot be used with roleArn

我找到了这个关于为计划事件设置类似事情的答案,但这似乎并不等同于我上面描述的控制台操作(控制台 UI 方法不会创建我可以看到的事件/规则)。

有人可以告诉我我做错了什么吗?

0 投票
1 回答
5102 浏览

amazon-web-services - terraform:创建安全组时出错:UnauthorizedOperation:您无权执行此操作

我有一个下面的 terraform 脚本,在终端上使用它时可以正常工作。

和变量文件如下所示。

当我使用 terraform apply 通过终端运行时,一切正常。但是当我通过詹金斯运行它时,同样的代码给了我下面的错误。

注意 :: 这是我在其中执行此操作的非默认 vpc。

我将非常感谢任何评论。我没有提到敏感值。

0 投票
4 回答
21283 浏览

git - 我应该将 .tfstate 文件提交到 Git 吗?

.tfstate对于是否将文件提交到 Git的问题,我有点困惑。Terraform 文档指出:

terraform.tfstate默认情况下,Terraform 还会将一些状态放入文件中。这个状态文件非常重要;它将各种资源元数据映射到实际资源 ID,以便 Terraform 知道它正在管理什么。该文件必须保存并分发给可能运行 Terraform 的任何人。我们建议简单地将其放入版本控制中,因为它通常不会太大。

现在,另一方面,关于使用 Terraform 时的最佳实践的已接受和赞成的答案指出:

Terraform 配置可用于在不同的基础设施上配置许多盒子,每个盒子都可以有不同的状态。因为它也可以由多人运行,所以这个状态应该在一个集中的位置(如 S3),而不是git。

(强调的是原作者,不是我)

谁是对的,如果是,为什么?

0 投票
1 回答
254 浏览

digital-ocean - 如何使用 Terraform 引导液滴?

使用 Terraform 在 Digital Ocean 上创建液滴时,创建的机器的密码通过邮件发送。如果我获得了有关 Digital Ocean 提供商的文档,您还可以指定要使用的密钥的 SSH ID。

如果我使用 Terraform 引导数据中心,我应该选择哪个选项?

不知何故,为每台机器使用不同的密码感觉不对(不知何故,使用密码本身感觉不对),但如果每台机器都链接到我用户的 SSH 密钥,也会感觉不对。

你是怎样做的?有没有一种方法可以被认为是好的(最好的?)实践?我应该只为此创建一个 SSH 密钥对并将其与 Terraform 文件一起提交到 Git 吗?……?

0 投票
1 回答
348 浏览

amazon-web-services - AWS 上的 Kubernetes 多主集群

我们使用 Terraform、用户数据 YAML 文件和 CoreOS AMI 在 AWS 上创建了一个单主三节点工作集群。集群按预期工作,但我们现在需要将主节点从 1 个扩展到 3 个以实现冗余目的。我的问题是:除了使用 etcd 集群和/或 http://kubernetes.io/docs/admin/high-availability/上提供的信息之外,我们是否有任何选择来部署新的或扩展现有集群多主节点?让我知道是否需要更多详细信息来回答这个问题。

0 投票
2 回答
415 浏览

azure - Terraform 远程状态 azure

我以前使用过 terraform,其中 terraform 可以将 tfstate 文件放在 S3 中。terraform 是否也支持 azure blob 存储作为后端?将后端设置为 azure blob 存储的命令是什么?

0 投票
1 回答
2187 浏览

amazon-ec2 - Terraform template_file 和 cloud-init

我开始使用 Terraform 来启动 AWS EC2 机器。我在网上看到一些资源指向template_file 资源的使用,与 cloudinit 相比,我不确定它的真正作用。

据我了解,cloud-init用于引导,您可以在其中将多个脚本从本地计算机加载到/var/lib/instance/scriptsEC2 实例的目录中,然后使用您指定的任何解释器自动运行它们。那么,我们需要渲染template_file什么?

另外,我的另一个问题是我们是否只允许将 bash 脚本作为 cloud-init 的一部分运行,还是也允许 python 解释器?

0 投票
2 回答
717 浏览

terraform - Does Terraform perform interpolation in provider declarations?

I am trying to declare the following Terraform provider:

I get the following error:

It seems that Terraform is not performing interpolation on my endpoint string, yet I don't see anything in the documentation about this -- what gives?

0 投票
1 回答
3466 浏览

openssl - Terraform 自签名证书 Openssl 验证失败

我正在尝试使用 Terraform 创建一个自签名证书,以便在测试/开发环境中内部使用。

我首先创建一个 CA 私钥,自签名证书。

然后,我为要为其启用 HTTPS 的内部域名创建证书签名请求和私钥。

然后我签署证书。这是我使用的整个 Terraform 清单:

我运行 Terraform 清单。然后我从状态文件中提取生成的证书并将它们保存到文件中。

我尝试使用 openssl 验证最终证书,但出现错误:

任何想法是什么问题?我花了很多时间试图弄清楚这一点。

基本上我想用它来为我的测试/开发环境中的私有 Docker 注册表启用 HTTPS。

0 投票
2 回答
25458 浏览

amazon-web-services - Terraform,从 null_resource、local-exec 和 AWS CLI 获取输出

我正在使用 Terraform 在 AWS 中自动提供 Cognito 身份池。AWS 提供商还不支持 Cognito,所以我一直在使用 null_resource 和 local-exec 来调用 AWS CLI。

我有以下资源:

给出以下输出:

下一步是将我已经创建的一些角色添加到身份池中:

问题是我无法提取 IdentityPoolId ${null_resource.create-identitypool.IdentityPoolId} 以在第二个资源中使用。我知道 null_resource 没有输出属性,所以我怎样才能从命令行输出中获取这个 JSON 对象。我还想使用 tirggers 并运行 aws cognito-identity list-identity-pools 和可能的 delete-identity-pool 以使这一切都可以重复,我还需要输出。

有任何想法吗?如果我在其他地方错过了这些信息,我们深表歉意。我也在 Terraform 邮件列表上问过这个问题,但我想我会尝试更广泛的受众。

谢谢,蒂姆