Рейтинг:0

Как настроить логику для создания нескольких машин на Azure с помощью terraform?

флаг cn

Ниже приведен шаблон, который у меня есть для лазурной виртуальной машины.

Как я слышал, в облаке Google у нас есть возможность установить количество для создания нескольких машин.

Как создать несколько машин с помощью одного шаблона, чтобы на основе значения переменной было создано такое количество машин.

Пример шаблона для виртуальной машины Azure Windows Server.

адрес гитхаба: соединять

Я хочу, чтобы этот репозиторий был постоянно общедоступным, поэтому не публикуйте здесь прямые файлы.

флаг cn
Начните с ознакомления с официальной документацией по адресу https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs.
флаг cn
А также ознакомьтесь с мета-аргументом count на https://www.terraform.io/language/meta-arguments/count.
Sara June avatar
флаг cn
Спасибо за ответ, поскольку вы можете наблюдать детали, эта опция, похоже, доступна только для облака Google, а не для Azure.
флаг cn
Мета-аргументы доступны для всех модулей, поэтому я не уверен, что понимаю вас. Черт, здесь даже есть пример с серверами Windows -> https://buildvirtual.net/terraform-count-examples/ ... Вам действительно нужно отредактировать свой вопрос с примером того, что вы делаете и какую ошибку вы испытываете.
Рейтинг:2
флаг jp

Один из способов добиться этого — объявить свойства как переменные и использовать их в качестве аргументов для for_each внутри определения ресурса.

См. пример здесь: https://stackoverflow.com/a/64462458/11942781

Рейтинг:0
флаг cn

Вот грубый рабочий пример того, как вы можете использовать мета-аргумент "count" с azurerm_windows_virtual_machine:

провайдер "азурерм" {
  Особенности {}
}
ресурс "random_string" "имя пользователя" { длина = 8 }
ресурс "random_password" "пароль" { длина = 24 }

ресурс "azurerm_resource_group" "rg" {
  имя = "счет-тест-победа"
  местоположение = "Северная Европа"
}
# Установите количество виртуальных машин, которые вы хотите
переменная "vm_count" {
  по умолчанию = 4
}

ресурс "azurerm_virtual_network" "тест" {
  имя = "тестовая сеть"
  адресное_пространство = ["10.0.0.0/16"]
  местоположение = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
}

ресурс "azurerm_subnet" "тест" {
  имя = "внутренний"
  resource_group_name = azurerm_resource_group.rg.name
  виртуальная_сеть_имя = azurerm_virtual_network.test.name
  address_prefixes = ["10.0.2.0/24"]
}

ресурс "azurerm_network_interface" "ник" {
  количество = var.vm_count
  имя = "nic-${count.index}"
  местоположение = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name

  ip_configuration {
    имя = "внутренний"
    subnet_id = azurerm_subnet.test.id
    private_ip_address_allocation = "Динамический"
  }
}

ресурс "azurerm_windows_virtual_machine" "VM" {
  количество = var.vm_count
  имя = "win-vm-${count.index}"
  resource_group_name = azurerm_resource_group.rg.name
  местоположение = azurerm_resource_group.rg.location
  размер = "Стандарт_F2"
  admin_username = random_string.username.result
  admin_password = случайный_пароль.пароль.результат
  network_interface_ids = [azurerm_network_interface.nic[count.index].id]

  ОС_диск {
    кэширование = "Чтение-Запись"
    storage_account_type = "Стандартный_LRS"
  }

  source_image_reference {
    издатель = "MicrosoftWindowsServer"
    предложение = "WindowsServer"
    sku = "2016-ЦОД"
    версия = "последняя"
  }
}

Хотя я бы посоветовал вам написать свой собственный модуль или изучить использование масштабируемых наборов виртуальных машин и определить, подходит ли он для вашего варианта использования, на https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/обзор

Соответствующую документацию по модулю azurerm для версии Windows можно найти по адресу https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/windows_virtual_machine_scale_set

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.