问题标签 [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-cloudformation - 基础设施即代码的行业标准
是否有人知道或参考了一套现有或新兴的基础设施即代码标准?我正在寻找云部署资产的定义,我可以将其用作环境定义的基础,可以将其转换或投影到 AWS Cloudformation 模板或 Azure 资源管理部署模板中。
terraform - How to give a .tf file as input in Terraform Apply command?
I'm a beginner in Terraform.
I have a directory which contains 2 .tf files.
Now I want to run Terraform Apply on a selected .tf file & neglect the other one.
Can I do that? If yes, how? If no, why & what is the best practice?
amazon-web-services - CloudFormation 模板:将基础设施作为代码进行持续测试
在该项目中,我们使用了一些 AWS 服务,例如 AWS Lambda、EC2、AWS API Gateway、ElastiCache 等。此外,我们还有 CloudFormation 模板来描述我们的整个基础设施。随着项目的开发,我们开始使用一些新的 AWS 服务或更改一些已经使用的配置。此外,我们应该使我们的 CloudFormation 模板保持最新。
在这里,我们面临的问题是,我们需要确保我们的 CloudFormation 模板有效、正确,并且如果需要,我们可以使用它来创建基础设施。在这种情况下,我们需要对模板进行持续测试。哪种方法更适合这种情况?
我们是否应该配置从 CloudFormation 模板自动创建堆栈作为持续集成过程的一部分并跟踪存储库中的模板更改?还是有更好的解决方案?
kubernetes - 在 Kubernetes 中使用完整的声明式方法
我们可以使用声明式的方法来创建和更新 kubernetes 资源kubectl apply -f
,但我们如何才能这样做来回收不再需要的资源。
我用过kubectl delete
,但这看起来像是命令式的,有时我们需要按正确的顺序删除东西。
有没有办法始终使用kubectl apply
它,它会自行确定要保留哪些资源以及删除哪些资源。就像在Terraform
.
或者我们应该得出结论,目前声明性方法仅适用于资源创建和更新。
用例:
例如,我们决定不向最终用户提供 K8S API,而是为他们提供一个存储库,他们可以在其中保存和更新他们的 yaml 文件,当合并拉取请求时,机器人可以在每次更新时将其应用于集群。所以我们也需要这个声明性的删除,这样我们就不必在用户之后清理东西。Terraform
provider 可能是解决方案,但在这种情况下,事情将锁定到 terraform,用户将需要学习另一种工具,而不是使用本机 k8s 格式。
azure - 在模块中使用 Azure 服务主体会导致提供程序错误
我正在 Azure 上建立一个基础设施,我选择的代码工具是 Terraform。
为了有一个很好的可维护代码,我决定使用模块。我当前的结构如下所示:
因此,我什至将提供程序代码放入一个模块中。我的代码看起来像这样:
但是当我运行时,terraform apply
我收到* provider.azurerm: Error validating provider: No valid (unexpired) Azure CLI Auth Tokens found. Please run
az login的错误消息.
我已经通过将代码从提供程序模块移动到main.tf
我的开发环境的文件中来解决这个问题。但我很好奇为什么会发生这种情况。根模块中是否需要提供程序资源?
谢谢!
amazon-web-services - Terraform 启用 vpc 流日志到 amazon s3
我正在开发 terraform 脚本以自动创建 aws 资源。作为其中的一部分,我正在创建一个 vpc 并尝试为此启用 vpc 流日志。我创建了一个 s3 存储桶,还创建了一个 iam 角色,如 terraform 文档https://www.terraform.io/docs/providers/aws/r/flow_log.html中所述
我的地形代码如下
当我执行 terraform plan 时出现以下错误
根据 terraform 文档log_group_name是可选的,只有当我们选择 cloud_watch_logs 作为log_destination_type时,我们才必须指定它的值
谁能帮我解决我的错误并将 vpc 流日志启用到 s3。
azure - Azure ARM 部署 - 多个 NIC 的 copyIndex 错误
我正在尝试将以下帕洛阿尔托部署部署到 Azure 环境。我们将它用作内部防火墙,以实现它提供的 NSG 所不具备的各种功能,因此我们不需要公共 IP。我们正在使用一个虚拟网关,并将防火墙置于一个主动-主动对中(负载均衡器、NSG 等在单独的模板中完成)。
我一直试图让这个模板工作一段时间,但我一直坚持使用多个 NIC 部署两个 VM。我不断收到此错误:
错误:Azure 错误:InvalidTemplate 消息:部署模板验证失败:“模板变量“nicName”无效:此位置不应使用模板函数“copyIndex”。该函数只能在指定了副本的资源中使用。有关使用详情,请参阅https://aka.ms/arm-copy。有关使用详情,请参阅https://aka.ms/arm-template-expressions。'。
我已经尝试了一堆修复 - 更改变量语法,更改资源的语法,但它们都不起作用。我已经查看了有关使用 copyIndex 功能的 Azure 文档,但我看不出哪里出错了。我希望有更多经验的人可以指出我的语法错误并提供有关如何纠正它的建议?
非常感谢,模板如下:
terraform - Terraform - 从同一脚本填充变量值
我很喜欢地形化;事实上,这是我训练的一部分。
我在想; 有没有办法让 terraform 将来自上一个命令的特定值(作为变量)存储在同一个文件中。
例子:
非常感谢您的帮助。
谢谢。
azure - Azure ARM 部署 - TemplateLink 不是现有的语言表达式属性
我正在尝试将防火墙部署到 Azure。当我在 Jenkins 中验证模板时,它说一切都很好。当我尝试运行模板时,此时它给了我一个错误:
错误内容如下:
“无法处理资源'/subscriptions/****/resourceGroups/networks-hub-rg/providers/Microsoft.Resources/deployments/SettingUpVirtualNetwork'在'1'行和'6637'列的模板语言表达式。'语言表达式属性“templateLink”不存在,可用属性为“模板、参数、模式、provisioningState”。”
现在 Azure 指南明确指出 templateLink 是完全有效的。我之前使用过 templateLink 命令没有任何问题,所以我不明白为什么这次它失败了。是因为我在 uri 行中使用了“templateLink.uri”吗?
以前有人遇到过这个错误吗?有什么建议吗?
amazon-web-services - Terraform 用户 TF_VAR 不工作的嵌套模块
我正在为我的基础设施开发一个 terraform 配置模块。我的结构如下图所示,
主文件
terra1.tf
terra1.tf
在子目录中,它包含我的模块代码。当我通过main.tf
文件调用它时,它会给我变量 error 。
顺便说一句,如果我在它自己的目录上运行 terra1 ,我没有收到任何错误。
问题:通过模块使用环境变量而不在每次调用中分配它(!!来自模块!!)
我怎么解决这个问题 ??
谢谢 。