Terraform создает план обслуживания приложений после каждого x службы приложений - PullRequest
0 голосов
/ 10 июля 2020

Я использую поставщика Terraform Azure для развертывания большого списка веб-приложений в планах обслуживания приложений.

Список веб-приложений настроен следующим образом:

applist = [
"app1",
"app2",
"app3",
"app4",
"app5",
"app6",
"app7",
"app8",
"app9",
"app10",
"app11",
"app12",
"app13",
"app14"
]

это возможно ли с помощью terraform создавать новый план обслуживания приложений после каждого 5-го приложения?

Я должен получить что-то вроде этого:

appserviceplan01(
"app1",
"app2",
"app3",
"app4",
"app5"
)
appserviceplan02(
"app6",
"app7",
"app8",
"app9",
"app10"
)
appserviceplan03(
"app11",
"app12",
"app13",
"app14
)

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Нашел решение на этой странице: https://azurecitadel.com/automation/terraform/lab4/

локальные жители, содержащие список фрагментов, создают группы с максимум 20 приложениями, выходные данные используются для создания планов обслуживания приложений с count и с element () приложения распределяются по планам обслуживания приложений

variable "app_service_object" {
  default = [
    "app1",
    "app2",
    "app3",
    "app4",
    "app5",
    "app6",
    "app7",
    "app8",
    "app9",
    "app10",
    "app11",
    "app12",
    "app13",
    "app14",
     ...
    "app100"
  ]
}

resource "azurerm_resource_group" "game" {
  name     = var.resource_group_name
  location = var.resource_group_location
}

locals {
  webappsperloc = [
    for name in chunklist(var.app_service_object, 20) : name
  ]
}

resource "azurerm_app_service_plan" "game" {
  count               = length(local.webappsperloc)
  name                = "${var.app_service_plan_name}${count.index}"
  location            = azurerm_resource_group.game.location
  resource_group_name = azurerm_resource_group.game.name

  sku {
    tier = "Basic"
    size = "B1"
  }
}

resource "azurerm_app_service" "game" {
  count               = length(var.app_service_object)
  name                = "${var.app_service_object[count.index]}-nextens-web"
  location            = azurerm_resource_group.game.location
  resource_group_name = azurerm_resource_group.game.name
  app_service_plan_id = element(azurerm_app_service_plan.game.*.id, count.index)

  site_config {
    // your site config
  }

}

0 голосов
/ 10 июля 2020

Вы можете объявить свой список как карту, а затем использовать для каждого l oop, чтобы создать ресурс плана, разделив на 5 ключ

примерно так ...

variable "app_service_object" {  
  default = {
1 ="app1"
2 = "app2"
3 = "app3"
4 = "app4"
5 = "app5"
6 = "app6"
7 = "app7"
 } 
  
}

resource "azurerm_resource_group" "game" {
  name     = var.resource_group_name
  location = var.resource_group_location
}



resource "azurerm_app_service_plan" "game" {
  for_each            = tomap(var.app_service_object)  
  name                = "${var.app_service_plan_name}-${floor(tonumber(each.key) / 5)}"
  location            = azurerm_resource_group.game.location
  resource_group_name = azurerm_resource_group.game.name
  kind                = "Linux"
  reserved            = true

  sku {
    tier = "Basic"
    size = "B1"
  }
}

resource "azurerm_app_service" "game" {
   for_each            = tomap(var.app_service_object)   

   name                = "${var.app_service_name_prefix}-${each.value}"
   location            = azurerm_resource_group.game.location
   resource_group_name = azurerm_resource_group.game.name
   app_service_plan_id = azurerm_app_service_plan.game[tostring(each.key)].id

  site_config {
   // your site config
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...