问题标签 [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.
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,则出现以下错误:
错误:配置文件中的语法错误
在 main.tf 第 6 行,在变量“resource_group_name”中:6:type = string
解析时出错:在 6:11:未知令牌:6:11 IDENT 字符串
python - 从 CDK 堆栈或应用程序构造树中检索属性以进行离线测试
为了便于在我公司的云部门采用 CDK 工具包,我想编写一些诊断工具来测试 CDK 应用程序中描述的架构,然后再部署它。特别是安全组规则和 IAM 策略是否允许在正确端口上的实例之间进行通信。
但是,我似乎无法访问在堆栈中的实例之间创建的安全组规则。有什么方法可以做到不涉及包装 SecurityGroup 构造或 Connections 类以在添加它们时存储所有规则(因为这意味着在其他问题中没有向后兼容性)?提前致谢。
amazon-ec2 - 如何将 terraform 导入与资源配置一起使用
在 terraform 导入之前,我已经定义:
然后我跑了:terraform import aws_instance.appserver <instance-id>
顺利,通过terraform show可以看到导入的ec2资源。然而,对我来说,谜团在于将这个现有的 terraform 状态“转移”到 terraform 配置(上面的 instance.tf)中,以便我可以将其作为基础设施即代码进行管理(或者至少按照我的理解)。我添加了 ami 和 instance_type 键及其对应的值,但每次我发出terraform plan
terraform 似乎都想“替换”我现有的实例。
1)为什么 terraform 要替换该实例?
2)如何将实例的 terraform 状态“转移”到配置中?(这可能吗?)
3) 对于你们这些经验丰富的退伍军人,你们如何能够在 terraform 中管理现有的 aws 基础设施?
python - “SiteCertificate”对象在 AWS CDK 中没有属性“certificate_arn”
我正在尝试将 CloudFormation 项目移至 AWS CDK。我从前端开始,它是一个静态站点,在带有证书管理器证书的 S3 存储桶前面使用 CloudFront 分配。
以下是我用来构建此堆栈的各种组件:
根
托管区域
证书
静态站点
这包含 S3 存储桶、策略和 CloudFront 分布(我可能想将它们分成不同的文件)
我还没有部署任何东西,我只是在本地使用cdk synth
. 我一直在运行cdk synth
我在 CDK 文件中添加的每个内容,并且 CloudFormation 输出与我目前用于部署项目的 CloudFormation 模板中的内容相似。当我运行时cdk sythn
,我收到以下错误:
我在这里使用正确的构造吗?在我可以访问它的 ARN 之前,证书是否需要存在?我试过使用DnsValidatedCertificate
,但我得到了同样的错误。我还注意到这种方法是实验性的,所以我不确定这是否与我看到此错误的原因有关。
cloud - 更改 rds 资源中的 db_option_group 时的资源替换
我使用 Hashicorp 的 Terraform 来管理 AWS 基础设施。某些迁移任务需要重命名多个资源,例如 db_option_group。
我不知道为什么 Terraform 只通过重命名 db_option_group 就说“强制替换”。在 API 文档中,它说“描述”是一个可选属性,不需要替换。
是什么导致 Terraform 出现这种行为?
terraform - Terraform:使用 Terraform 一次标记所有谷歌计算实例
我有一个现有项目,项目中运行着实例。我已经使用 Terraform 和凭据文件在项目中进行了身份验证。我想通过输入项目 ID 来获取现有资源。
amazon-web-services - 如何通过 Terraform 启动没有密钥对的 EC2 实例?
我想用我的 Terraform 配置启动一个没有密钥对的 EC2 实例。我在 Internet 上找不到任何表明在 Terraform 中使用“无密钥对”的信息。任何将 Terraform 配置为以这种方式使用的人?
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.67.0
, from1.30.3
) - 核对现有堆栈
- Nuked 相关 S3 存储桶
- 更新节点运行时 (
12.16.1
, from8.10.0
) - 下载并检查了包含失败 lambda 的 CFN 模板 - 未报告任何问题
我仍然得到相同的结果。当我重新运行构建并检查 CloudFormation 事件日志时,我确实看到堆栈无法创建,因为其中的 Lambda 函数无法创建。这个函数(其他 Lambda 在运行早期成功创建)没有什么特别之处,除了它是 API 中每个其他函数的授权者,这可能很重要,也可能不重要。我仍然无法找到有关 lambda 无法创建的原因的更多详细信息。
4月6日更新
好的,现在我了解了 CloudFormation 控制台的工作原理,现在我认为这是最根本的错误消息
查看这个嵌套堆栈的 CFN 模板本身,我现在明白发生了什么。每个 Lamba 都有自己的堆栈,整个包中的每个堆栈都被编译成一个 ZIP 文件,其大小最终会比上面指定的限制大 270MB 或 20MB。从这一点来看,我似乎有两条可能的前进道路
- 弄清楚如何跨多个 ZIP 拆分功能
- 更改 webpack 配置,使编译后的文件不那么臃肿(我真的不知道这里发生了什么 - webpack 后 1k TypeScript 文件输出为 6.5MB)
azure - 如何将托管标识对象 ID 传递到 Azure 蓝图中的 KeyVault 模板
所以,我正在尝试启动 aManaged Identity
和 a KeyVault
using Blueprints
。我有一个单独的工作模板。我的最终目标是在同一个蓝图中同时启动这两种资源以及更多资源。我遇到的问题是我需要在部署期间将托管身份的对象 ID 传递给 KeyVault 模板。我有部署托管标识资源组的蓝图设置,然后是托管标识,然后是 keyvault 组和 keyvault。
部署一直工作到 KV 资源组,然后在部署 keyvault 期间失败。有没有人知道如何做到这一点?
下面是 2 张图片,显示了蓝图的布局以及需要对象 ID 的 keyvault 模板部分。
Azure 蓝图布局:
托管身份的访问策略所在的 KeyVault 模板:
错误图片:
单击查看部署详细信息后,下一页上的错误图片:
infrastructure-as-code - SumoLogic 仪表板 - 我如何实现自动化?
我在 SumoLogic 仪表板和警报方面获得了一些经验。我想在代码中进行所有可能的配置。有人有 SumoLogic 配置自动化的经验吗?目前我正在使用 Ansible 进行通用服务器和基础设施配置。
感谢您提供所有信息!
最好的问候,拉法尔。