首页 > 解决方案 > 我有 yaml 管道,它将在 4 个区域中使用 tf 创建我的 az 资源(rg、vnet、aks ..)。使用相同的 piplin 我想在 2 个区域中创建 acr?

问题描述

我想在 2 个区域和其他 2 个要跳过的区域创建 acr?使用相同的 yaml 管道,我该如何实现?

像这样,我正在创建 acr

# ---- create new resource group account
resource "azurerm_resource_group" "rg" {
  name =  var.resource_group_name 
  location            = var.location 
 
}

resource "azurerm_container_registry" "acr" {
  name                      = var.azurerm_container_name
  resource_group_name       = var.resource_group_name
  location                  = var.location
  sku                       = var.sku
  admin_enabled             = var.admin_enabled
  georeplication_locations  = var.georeplication_locations
  
}

标签: azure-devopsterraformazure-aksterraform-provider-azureazure-container-registry

解决方案


count使用andlist变量很容易解决您的问题,或者您可以使用for_each它来解决它。

计数并列出:

variable "regions" {
  default = [
    "West US",
    "East US"
  ]
}

variable "acr_names" {
  default = [
    "acr_west",
    "acr_east"
  ]
}

resource "azurerm_container_registry" "acr" {
  count                     = 2
  name                      = element(var.acr_names, count.index)
  resource_group_name       = var.resource_group_name
  location                  = element(var.regions, count.index)
  sku                       = var.sku
  admin_enabled             = var.admin_enabled
  georeplication_locations  = var.georeplication_locations
  
}

For_each:

variable "acrs" {
  default = {
    acr_west = "West US",
    acr_east = "East US"
}

resource "azurerm_container_registry" "acr" {
  for_each = var.acrs
  name                      = each.key
  resource_group_name       = var.resource_group_name
  location                  = each.value
  sku                       = var.sku
  admin_enabled             = var.admin_enabled
  georeplication_locations  = var.georeplication_locations

}

选择一个你喜欢的来解决问题。


推荐阅读