我需要创建一个 Azure 容器注册表。我正在使用 Terragrunt 来管理 Azure 中的多个环境。我的简化布局类似于:
/modules
/environments
/development
/staging
/production
由于它是共享的,因此注册表并不真正适合任何这些环境。是否有一种“最佳实践”方式来创建一次性全局资源,例如容器注册表?我想不出一种我喜欢的方式,但感觉没有错。
我需要创建一个 Azure 容器注册表。我正在使用 Terragrunt 来管理 Azure 中的多个环境。我的简化布局类似于:
/modules
/environments
/development
/staging
/production
由于它是共享的,因此注册表并不真正适合任何这些环境。是否有一种“最佳实践”方式来创建一次性全局资源,例如容器注册表?我想不出一种我喜欢的方式,但感觉没有错。
不是 Azure 特定的,但已经经历了类似的练习,我假设存在与您的帐户相关联的全局对象,而不是环境。在 AWS 中就是这种情况,有 VPC、实例等,尽管 IAM(用户、角色、角色策略管理)等项目归账户所有,所以经过一些跟踪和错误后,我在同一个根目录中提出了以下内容dev、staging 和 prod.... 有 global 的子存储库,主要是为了控制更改范围。
所有的 dev,stage,prod 都使用全局目录 through terraform_remote_state
,实际上dependency
因为我正在使用terragrunt
,但它是类似的。
高温高压
tree global
global
├── cloud_watch_alarm.tf
├── dynamo_db
│ └── terragrunt.hcl
├── iam
│ ├── iam_groups.tf
│ ├── iam_instance_profile.tf
│ ├── iam_policies.tf
│ ├── iam_policy_attachment.tf
│ ├── iam_role_policies.tf
│ ├── iam_roles.tf
│ ├── iam_user_group_membership.tf
│ ├── iam_users.tf
│ ├── main.tf
│ ├── provider.tf
│ ├── terragrunt.hcl
│ └── variables.tf
├── main.tf
├── s3
│ ├── main.tf
│ ├── provider.tf
│ ├── s3-ohio.tf
│ ├── s3.tf
│ └── terragrunt.hcl
├── sns_topic_subscription.tf
├── sns_topic.tf
├── sqs.tf
├── terragrunt.hcl
└── variables.tf
编辑:唉,我不能说我的做法是最好的,我问了同样的问题并得到了类似的答案
您可以创建类似于以下的目录结构:
account
├── _global
│ └── acr
├── dev
├── prod
└── stage
对于您拥有的每个 Azure 帐户/订阅,创建一个顶级account
目录。在该目录的顶层,_global
为该帐户的全局资源设置一个文件夹。还要为每个环境创建子目录。
Gruntwork 的示例 repo是一个很好的参考。