问题标签 [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.
amazon-web-services - 适用于 IaC 的 AWS CDK VS 开发工具包
我最近开始使用 AWS 和 IaC,我正在使用 Cloudformation 来预置我的 AWS 资源,但我发现 AWS 同时提供了 SDK 和 CDK,使您能够以编程方式而不是普通的 json/yaml 来预置资源。
但是根据文档,我并不真正了解它们之间的区别,有人可以解释一下它们之间的区别以及您应该使用什么用例吗?
python - 读取本地状态/检查点值 Pulumi
TL;博士。我想通过本地 Pulumi 堆栈保存将先前堆栈的输出准备在较新的堆栈中。例如,在之前创建的 VPC/子网中创建 AWS Fargate ECS 集群。如何在 Python 中做到这一点?
我创建了dev
Pulumi 堆栈,应用代码:
得到了这样的Outputs
:
正如您在此处看到的,我正在使用本地堆栈放置/root/.pulumi/stacks/dev.json
。到目前为止,一切都很好。现在在其他目录中,我想创建 fargate 集群描述:
在这里我需要阅读以前创建pulumi-private-subnet-ids
的 , pulumi-public-subnet-ids
,pulumi-vpc-id
输出值?如何正确地做到这一点?
我只找到了https://app.pulumi.com后端示例:
https
://www.pulumi.com/docs/intro/concepts/organizing-stacks-projects/#inter-stack-dependencies https://www .pulumi.com/docs/intro/concepts/programming-model/#stack-references
https://www.pulumi.com/docs/tutorials/aws/aws-py-stackreference/
任何人都可以提供本地或 AWS s3 示例如何读取其他堆栈/目录中的输出吗?
amazon-web-services - 使用 AWS CDK 配置具有 S3 源和自定义源 (ELB) 的 CloudFront 分配
我有一个使用 Django 和 Vue.js 的应用程序。目前,APIapi.mydomain.com
用于将流量发送到应用程序负载均衡器,该负载均衡器路由到 Fargate 服务,并提供 Vue.js 静态站点,该站点mydomain.com
将流量发送到存储站点静态资产的 S3 存储桶前面的 CloudFront 分配。
我想在mydomain.com/api/*
不使用子域的情况下在 上提供 API,并继续在 上提供静态站点mydomain.com
。
ALB 工作正常,我可以转到 ALB 自动生成的 AWS URL 并从我的 Fargate 服务中获得正确的响应。
这是我的 CloudFront 分配的 CDK 代码:
这是我的应用程序负载均衡器的代码:
我不确定 SSL 终止应如何与 CloudFront 和 ALB 一起使用。ALB 是否应该只接受来自 CloudFront 分配的连接?
这是输出cdk synth
:
这是我尝试使用 CDK 实现 IaC 的分支的完整存储库https://gitlab.com/verbose-equals-true/django-postgres-vue-gitlab-ecs/-/tree/feature-aws-cdk . 我正在尝试将此项目从 CloudFormation 移动到 CDK
amazon-web-services - 如何忽略 Terraform 中的嵌套字段?
Terraform新手在这里。我这里有一个 ECS 计划任务的代码。每当我更改并应用更改时,都会在 ECS 任务中设置任务定义的第一个版本。所以我尝试向它添加生命周期方法。
试过:
和
您如何通过生命周期忽略嵌套字段?
amazon-ecs - aws-ecs-patterns 错误:此服务的集群需要 Ec2 容量。在集群上调用 addXxxCapacity()
希望有人可以在这里帮助我,根据 AWS CDK 文档,如果我声明我的 VPC,那么我不应该声明 'capacity',但是当我运行cdk synth时出现以下错误......
抛出新的错误(
Validation failed with the following errors:\n ${errorList}
);错误:验证失败并出现以下错误:[PrerenderInfrasctutureStack/preRenderApp/Service] 此服务的集群需要 Ec2 容量。在集群上调用 addXxxCapacity()。
这是我的代码......(我希望 Nathan Peck 看到这个)
yaml - GCP/GKE 添加网络标签
我正在尝试找到一种方法来改善我们的基础设施作为 GCP 中的代码情况。我的希望是我可以
- 根据添加的目标标签创建防火墙规则白名单
- 使目标标签成为部署 yaml 配置的一部分。
我希望通过在部署中添加标签,我可以让它自动将这些标签应用于它创建的任何计算资源或负载均衡器。这样,可以通过 terraform 创建适用于这些标签的防火墙规则。
我是以错误的方式解决这个问题还是有办法做到这一点?这既关乎自动化防火墙规则管理,也关乎清理可能干扰操作的不必要规则。
ansible - 在 Linux Centos 6 中使用 Ansible 或 Terraform 提供服务
好吧,我有一个带有 Intranet 基础设施的客户端,无法通过 Internet 或 VPN 访问,因此我需要通过 TeamViewer 访问。
这个客户端给了我 10 个虚拟机(Linux Centos 6)来工作(不能创建其他虚拟机或破坏它)。所以我需要准备这个基础设施来运行我的 CI/CD 并交付软件,然后我需要在我的软件部署之前运行这些服务:
- 码头工人
- 蒙哥数据库
- Postgres
- Nginx
- 詹金斯
我正在考虑两种解决方案:
- TerraformCLI(记住我需要通过 Teamviewer 访问客户端并运行
terraform apply
) - Ansible(在这里我可以列出 10 台机器并与 1 个 playbook 一起执行)。
我听说Terraform更多的是用于配置服务器(VM、EC2 ...)、VPC、子网、LoadBalancers,但Ansible更多的是关于以更精细的方式配置每台机器。如果这是正确的,我认为 Ansible 对我来说是正确的选择。
有什么建议吗?
bitbucket - Bitbucket Repos 的基础设施即代码?
有没有办法使用“基础设施即代码”工具(在 cloudformation、terraform、pulumi 等类型中)创建和配置 BitBucket(云)管道和高级 repo 配置选项?
看起来 Terraform 有一些支持,但我正在寻找更高级的东西:比如设置存储库部署和变量设置的能力,甚至可能设置管道。看起来 Bitbucket 已经为其中一些功能提供了相当广泛的 REST api。但是我在“基础设施即代码”空间中看不到任何明显的包装。
azure - 强制NSG与子网关联时如何使App服务虚拟网络快速连接
处理自定义策略强制执行子网和 nsg 关联的项目。如果子网没有与之关联的 NSG,则无法预配。
使用 terraform 部署资源 - 资源组、VNET、NSG,在创建子网之前我创建了与子网关联的 NSG 作为 VNET 部署的一部分,部署了应用服务计划、Web 应用,然后尝试进行应用服务虚拟网络 swify 连接,但失败了因为缺少服务委托。
地形脚本
我唯一不知道的是如何应用服务委托。如果在创建子网之前执行 NSG 的自定义策略不存在,我可以轻松完成此操作
地形脚本
如果需要,我可以在 tf config 下面使用来设置 NSG 关联
但这种方法的问题是关联将在子网部署后发生,但由于自定义策略到位,tf apply 失败并出现策略违规错误
有什么方法可以在创建子网之前关联 NSG 并应用服务委托?
azure - 如何使 Azure 备份与 Terraform 一起使用?
我正在尝试使用 terraform 为 Azure VM 启动备份,但它没有采用 source_vm_id 参数。我把它列出如下
我收到以下错误:错误:在非计数上下文中引用“计数”
在 AGC.tf 第 264 行,在资源“azurerm_backup_protected_vm”“BackupProtected_app_vm_01”中:264:source_vm_id = [element(azurerm_virtual_machine.app_vm_01.*.id, count.index)]
“count”对象只能在“resource”和“data”块中使用,并且只能在设置了“count”参数时使用。
我试图在不使用“元素”的情况下更改它,但它仍然抛出错误。
这是我为 VM 定义的内容: