问题标签 [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 回答
5681 浏览

terraform - terraform plan 错误“功能”:未设置必填字段

terraform init初始化成功,下面是我的main.tf

当我运行terraform plan -var resource_group_name=vnet-main -out vnet.tfplan 得到以下警告时:

警告:仅插值表达式已弃用

在 .terraform/modules/vnet-main/Azure-terraform-azurerm-vnet-e0b9155/main.tf 第 3 行,在资源“azurerm_resource_group”“vnet”中:3:name
=“${var.resource_group_name}”

警告:引用类型约束已弃用

在 .terraform/modules/vnet-main/Azure-terraform-azurerm-vnet-e0b9155/variables.tf 第 39 行,在变量“nsg_ids”中:39:type = “map”

终于得到以下错误:

错误:“功能”:未设置必填字段

根据下面 stackoverflow 文章中提到的建议,如果我运行升级命令 ( terraform 0.12upgrade) 升级到 0.12,则出现以下错误:

修复 Terraform 中的“仅插值表达式已弃用”警告

错误:配置文件中的语法错误

在 main.tf 第 6 行,在变量“resource_group_name”中:6:type = string

解析时出错:在 6:11:未知令牌:6:11 IDENT 字符串

0 投票
1 回答
113 浏览

python - 从 CDK 堆栈或应用程序构造树中检索属性以进行离线测试

为了便于在我公司的云部门采用 CDK 工具包,我想编写一些诊断工具来测试 CDK 应用程序中描述的架构,然后再部署它。特别是安全组规则和 IAM 策略是否允许在正确端口上的实例之间进行通信。

但是,我似乎无法访问在堆栈中的实例之间创建的安全组规则。有什么方法可以做到不涉及包装 SecurityGroup 构造或 Connections 类以在添加它们时存储所有规则(因为这意味着在其他问题中没有向后兼容性)?提前致谢。

0 投票
1 回答
1020 浏览

amazon-ec2 - 如何将 terraform 导入与资源配置一起使用

在 terraform 导入之前,我已经定义:

然后我跑了:terraform import aws_instance.appserver <instance-id>顺利,通过terraform show可以看到导入的ec2资源。然而,对我来说,谜团在于将这个现有的 terraform 状态“转移”到 terraform 配置(上面的 instance.tf)中,以便我可以将其作为基础设施即代码进行管理(或者至少按照我的理解)。我添加了 ami 和 instance_type 键及其对应的值,但每次我发出terraform planterraform 似乎都想“替换”我现有的实例。

1)为什么 terraform 要替换该实例?

2)如何将实例的 terraform 状态“转移”到配置中?(这可能吗?)

3) 对于你们这些经验丰富的退伍军人,你们如何能够在 terraform 中管理现有的 aws 基础设施?

0 投票
1 回答
320 浏览

python - “SiteCertificate”对象在 AWS CDK 中没有属性“certificate_arn”

我正在尝试将 CloudFormation 项目移至 AWS CDK。我从前端开始,它是一个静态站点,在带有证书管理器证书的 S3 存储桶前面使用 CloudFront 分配。

以下是我用来构建此堆栈的各种组件:

托管区域

证书

静态站点

这包含 S3 存储桶、策略和 CloudFront 分布(我可能想将它们分成不同的文件)

我还没有部署任何东西,我只是在本地使用cdk synth. 我一直在运行cdk synth我在 CDK 文件中添加的每个内容,并且 CloudFormation 输出与我目前用于部署项目的 CloudFormation 模板中的内容相似。当我运行时cdk sythn,我收到以下错误:

我在这里使用正确的构造吗?在我可以访问它的 ARN 之前,证书是否需要存在?我试过使用DnsValidatedCertificate,但我得到了同样的错误。我还注意到这种方法是实验性的,所以我不确定这是否与我看到此错误的原因有关。

0 投票
1 回答
536 浏览

cloud - 更改 rds 资源中的 db_option_group 时的资源替换

我使用 Hashicorp 的 Terraform 来管理 AWS 基础设施。某些迁移任务需要重命名多个资源,例如 db_option_group。

我不知道为什么 Terraform 只通过重命名 db_option_group 就说“强制替换”。在 API 文档中,它说“描述”是一个可选属性,不需要替换。

是什么导致 Terraform 出现这种行为?

0 投票
1 回答
51 浏览

terraform - Terraform:使用 Terraform 一次标记所有谷歌计算实例

我有一个现有项目,项目中运行着实例。我已经使用 Terraform 和凭据文件在项目中进行了身份验证。我想通过输入项目 ID 来获取现有资源。

0 投票
1 回答
491 浏览

amazon-web-services - 如何通过 Terraform 启动没有密钥对的 EC2 实例?

我想用我的 Terraform 配置启动一个没有密钥对的 EC2 实例。我在 Internet 上找不到任何表明在 Terraform 中使用“无密钥对”的信息。任何将 Terraform 配置为以这种方式使用的人?

0 投票
1 回答
697 浏览

amazon-web-services - 如何调试由 CircleCI 编排的 Serverless 生成的 CloudFormation 模板

语境

我觉得我需要在这里提供很多上下文才能理解问题的全部范围,所以如果这有点长或最终提供了太多信息,请提前道歉我只是想避免很多人关注尽我所能提出问题和澄清请求。

我有一个技术交接项目。它曾经在不同 AWS 账户中的不同所有者下投入生产。我正在尝试在我控制的 AWS 账户中重新启动它,其中一个软件包给我带来了一些问题。

它使用无服务器来配置几个 S3 存储桶及其访问策略、几个 IAM 角色和一堆 ApiGateway 方法。该软件包依赖于嵌套堆栈来解决 200 资源限制,如此所述。

最后,CircleCI 连接的 IAM 用户AdministratorAccess附加了策略。

问题

在构建的这一步中,我不断收到来自 CircleCI 的失败

失败的确切性质似乎不一致,即它并不总是在同一个地方失败。在某些时候,资源创建失败,整个过程回滚。以下是日志中运行失败的几个示例,包含 +/- 5 行,然后是 Serverless 报告的实际错误

运行 1

运行 2

注意:上述日志中的所有唯一标识符都已被新标识符替换/混淆,这些标识符两个日志中是唯一的,而不是每个日志,即FuncAbcNestedStack出现在两个日志中,因为它在配置中完全相同的资源。

问题

鉴于以上所有情况,我现在的问题是如何调试它?这代表了我(相信)对我可用的所有细节,因为我无法更深入地找出资源创建失败的原因。我已经阅读了一些关于故障排除错误的信息,但没有任何帮助,因为我实际上并没有直接使用 EC2。

4 月 4 日更新

我已经做了大量的工作来尝试调试模板。请注意,我通常不使用模板本身,Serverless 会生成它们并将它们转储到 S3 存储桶中,然后再应用它们。

这是我采取的一些步骤

  1. 更新到最新版本的无服务器 ( 1.67.0, from 1.30.3)
  2. 核对现有堆栈
  3. Nuked 相关 S3 存储桶
  4. 更新节点运行时 ( 12.16.1, from 8.10.0)
  5. 下载并检查了包含失败 lambda 的 CFN 模板 - 未报告任何问题

我仍然得到相同的结果。当我重新运行构建并检查 CloudFormation 事件日志时,我确实看到堆栈无法创建,因为其中的 Lambda 函数无法创建。这个函数(其他 Lambda 在运行早期成功创建)没有什么特别之处,除了它是 API 中每个其他函数的授权者,这可能很重要,也可能不重要。我仍然无法找到有关 lambda 无法创建的原因的更多详细信息。

4月6日更新

好的,现在我了解了 CloudFormation 控制台的工作原理,现在我认为这是最根本的错误消息

查看这个嵌套堆栈的 CFN 模板本身,我现在明白发生了什么。每个 Lamba 都有自己的堆栈,整个包中的每个堆栈都被编译成一个 ZIP 文件,其大小最终会比上面指定的限制大 270MB 或 20MB。从这一点来看,我似乎有两条可能的前进道路

  1. 弄清楚如何跨多个 ZIP 拆分功能
  2. 更改 webpack 配置,使编译后的文件不那么臃肿(我真的不知道这里发生了什么 - webpack 后 1k TypeScript 文件输出为 6.5MB)
0 投票
1 回答
581 浏览

azure - 如何将托管标识对象 ID 传递到 Azure 蓝图中的 KeyVault 模板

所以,我正在尝试启动 aManaged Identity和 a KeyVaultusing Blueprints。我有一个单独的工作模板。我的最终目标是在同一个蓝图中同时启动这两种资源以及更多资源。我遇到的问题是我需要在部署期间将托管身份的对象 ID 传递给 KeyVault 模板。我有部署托管标识资源组的蓝图设置,然后是托管标识,然后是 keyvault 组和 keyvault。

部署一直工作到 KV 资源组,然后在部署 keyvault 期间失败。有没有人知道如何做到这一点?

下面是 2 张图片,显示了蓝图的布局以及需要对象 ID 的 keyvault 模板部分。

Azure 蓝图布局:
Azure 蓝图布局

托管身份的访问策略所在的 KeyVault 模板:
托管身份的访问策略所在的 KeyVault 模板

错误图片:
错误图片

单击查看部署详细信息后,下一页上的错误图片: 单击查看部署详细信息后,下一页上的错误图片

0 投票
1 回答
218 浏览

infrastructure-as-code - SumoLogic 仪表板 - 我如何实现自动化?

我在 SumoLogic 仪表板和警报方面获得了一些经验。我想在代码中进行所有可能的配置。有人有 SumoLogic 配置自动化的经验吗?目前我正在使用 Ansible 进行通用服务器和基础设施配置。

感谢您提供所有信息!

最好的问候,拉法尔。