1

我需要创建一个 Azure 容器注册表。我正在使用 Terragrunt 来管理 Azure 中的多个环境。我的简化布局类似于:

/modules
/environments
  /development
  /staging
  /production

由于它是共享的,因此注册表并不真正适合任何这些环境。是否有一种“最佳实践”方式来创建一次性全局资源,例如容器注册表?我想不出一种我喜欢的方式,但感觉没有错。

4

2 回答 2

1

不是 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

编辑:唉,我不能说我的做法是最好的,我问了同样的问题并得到了类似的答案

于 2020-01-20T22:52:30.533 回答
1

您可以创建类似于以下的目录结构:

account
├── _global
│   └── acr
├── dev
├── prod
└── stage

对于您拥有的每个 Azure 帐户/订阅,创建一个顶级account目录。在该目录的顶层,_global为该帐户的全局资源设置一个文件夹。还要为每个环境创建子目录。

Gruntwork 的示例 repo是一个很好的参考。

于 2020-01-29T15:18:14.247 回答