Azure 使用Terraform管理基础设施的特定于环境的属性
(但这个空间似乎不那么活跃。) TL;TR:假设存在使用Terraform编码的Web服务器基础设施的开发、阶段和产品环境。如何确保每个环境在具有不同SSL证书的不同域上运行(在Azure上)Azure 使用Terraform管理基础设施的特定于环境的属性,azure,azure-devops,terraform,devops,environment,Azure,Azure Devops,Terraform,Devops,Environment,(但这个空间似乎不那么活跃。) TL;TR:假设存在使用Terraform编码的Web服务器基础设施的开发、阶段和产品环境。如何确保每个环境在具有不同SSL证书的不同域上运行(在Azure上) 基本上,我学到了这些: 隔离通孔 通过文件布局进行隔离 对于每个环境(开发、阶段、产品),AWS、Azure等上都有一个专用帐户 我还了解了沙箱环境的重要性,并专门为本地用户提供了一个帐户。我也读过一些关于像这样的助手的文章 我想我已经很好地理解了所有这些难题是如何与基础架构(但是在代码级别)结合在一起
基本上,我学到了这些:
例如,让我们考虑一个简单的基础结构,包括:
main.tf中使用Terraform进行配置。terraformapply
发挥了神奇的作用,将所有资源部署到我的(Azure)帐户,并使Web服务器可以访问example.com
我知道如何重构我的基础架构代码,以引入应用上述最佳实践的开发、阶段和产品环境
我不知道的是如何处理特定于环境的变量,尤其是在网络中。也就是说,对于每个开发、阶段和产品环境:
在哪里保存各种秘密,特别是对于开发人员和舞台
如何管理DNS/FQND设置?显然,所有环境不能共享相同的example.com
如何处理SSL证书
如何使用特定于开发或阶段的数据处理预加载数据库
据推测,这些都是通过某种形式的参数化来处理的
- 建议使用哪些地形技术
- 每个环境目录下的
variables.tf
和.tfvars
(或具有自定义帮助程序脚本或Makefiles的等效环境变量)文件是好的选择吗
在我的项目中,我将所有局部变量存储到一个文件local variables.tf
,其结构类似于:
locals {
database_ip = {
staging = xxx.xxx.xxx.xxx
production = xxx.xxx.xxx.xxx
}
ssl_cert = {
staging = <staging_path>
production = <production_path
}
}
本地人{
数据库ip={
暂存=xxx.xxx.xxx.xxx
生产=xxx.xxx.xxx.xxx
}
ssl_证书={
分期付款=
production=在我的项目中,我将所有局部变量存储到一个文件local variables.tf
,其结构类似于:
locals {
database_ip = {
staging = xxx.xxx.xxx.xxx
production = xxx.xxx.xxx.xxx
}
ssl_cert = {
staging = <staging_path>
production = <production_path
}
}
本地人{
数据库ip={
暂存=xxx.xxx.xxx.xxx
生产=xxx.xxx.xxx.xxx
}
ssl_证书={
分期付款=
production=就目前而言,这个问题相当广泛,没有一个具体的答案。根据个人喜好,不同用户的答案可能不同。此外,你有很多小问题,很难给出所有答案。我会尝试将问题的范围缩小到一个特定的问题r有待解决的错误。背景可能会像我想完整描述我在Terraform中所处的位置一样广泛,但问题非常具体:如何管理特定于环境的属性,如机密或域名。这都是从几个角度提出的单个问题。我不同意结束这个问题。也许吧ps Azure MVP在盲目判断问题没有重点之前,也应该学习如何理解和了解Terraform。它清楚地询问了如何管理特定于环境的属性以及在详细问题(机密、DNS、SSL)中询问的所有问题在这种情况下是特定于环境的,因此以同样的方式进行管理。我甚至给那些想回答的人一些提示。我实际上考虑过回答这个问题。但是你在最后有4个不同的问题。我可以在地形的情况下回答1和2。但是3和4我不能,因为它开始改变范围。如果你你可以编辑这个问题,以便更好地解决每个工作区切换变量的问题。我很乐意给出一种处理方法。但我的答案是针对地形和工作区的,对那些使用Terragrunt的人来说是无效的,并且超出了Azure DevOps的范围。因此,为什么我建议缩小范围。我试图概述我的推理对于最初的结束。@AndyShinn我究竟如何知道问题1和2的解决方案与问题3和4的解决方案不同?如果我知道,我可能不需要问。我猜特定于环境的机密和DNS名称可以通过variables.tf
文件进行有效管理。应用此类知识的传递属性是有效的并假定SSL证书和其他证书可以进行类似的管理(通过变量到证书文件的不同路径,等等)。如果这不正确,答案可以告诉我们,澄清OP的误解,指出需要不同的解决方案。关闭只会强化鸡蛋问题。目前来看,这个问题相当广泛,不会有一个单一的具体答案。根据个人喜好,不同用户的答案可能不同。此外,你有很多很难给出所有答案的小问题。我会尝试将问题的范围缩小到一个需要解决的特定问题或错误。背景可能会呈现得非常广泛,就像我想完整描述我在Terraform中所处的位置一样,但问题非常具体:如何管理环境特定于环境的属性,如机密或域名。这都是从几个角度提出的一个问题。我不同意结束这个问题。也许是Azure MVPs sh