Создание виртуальной машины Azure Windows через terraform - PullRequest
0 голосов
/ 20 сентября 2018

В Azure я пытаюсь создать виртуальную машину Windows с помощью terraform.
Я делал это с помощью powershell, ранее используя файл Template.json.Теперь я имею дело с terraform, с которым я совершенно новичок.
Итак, я искал несколько примеров сценариев, которые создают виртуальную машину в Azure, и нашел this .

В этой ссылке приведен пример скрипта terraform для вращения виртуальной машины Linux.Но мне нужно раскрутить Windows VM из образа.Где я должен предоставить подробности об образе.
Мое полное требование:
1. Создайте виртуальную машину Windows из образа (с идентификатором ресурса)
2. У меня уже есть группа ресурсов, Виртуальная сеть, Создана подсеть.Мне просто нужно передать эти значения и создать их.
3. Мы уже определили префикс адреса подсети, адресное пространство Vnet из своего портала.Поэтому я должен снова дать в сценарии или я могу пропустить его.
4. Бизнес-требование состоит в том, чтобы никакие виртуальные машины не имели общедоступных IP-адресов и DNS-имен, поэтому, если я удалю раздел «# Создать общедоступные IP-адреса», это не будетсоздать публичный IP?

Сценарий для создания машины с Linux - здесь , который я принимаю в качестве справки.

Пожалуйста, прости меня, если вопросы, которые я задал, совершенно неубедительны, но мне нужно знать эти детали.
Может ли кто-нибудь помочь мне / направить меня в правильном направлении, пожалуйста!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Ниже приведен пример использования данных для использования уже существующих ресурсов в terraform, также есть блок кода для создания виртуальной машины Windows.Вам нужно будет получить существующую VNET и создать NIC

. Используйте директиву data, чтобы получить VNET azurerm_virtual_network, вы можете увидеть синтаксис ниже для группы ресурсов.Вам нужно будет добавить группу ресурсов и, возможно, местоположение в этот блок.

Создать ресурс azurerm_network_interface, используя идентификатор VNET

Добавить идентификатор сетевого интерфейса в виртуальную машину (network_interface_ids = [])

Пример кода TF для создания и балансировки нагрузки виртуальных машин

variable "subscription_id" {}
variable "client_id" {}
variable "client_secret" {}
variable "tenant_id" {}

provider "azurerm" {
  tenant_id       = "${var.tenant_id}"
  subscription_id = "${var.subscription_id}"
  client_id       = "${var.client_id}"
  client_secret   = "${var.client_secret}"
}

data "azurerm_resource_group" "resource_group" {
  name                = "learning-tf-web-rg"
}


resource "azurerm_virtual_machine" "web_server" {
  name                  = "server"
  location              = "westus2"
  resource_group_name   = "${data.azurerm_resource_group.resource_group.name}"
  network_interface_ids = []
  vm_size               = "Standard_B2s"

  storage_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2016-Datacenter-Server-Core-smalldisk"
    version   = "latest"
  }

  storage_os_disk {
    name              = "server-os"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }

  os_profile {
    computer_name      = "server"
    admin_username     = "server"
    admin_password     = "Passw0rd1234"

  }

  os_profile_windows_config {
  }

}
0 голосов
/ 20 сентября 2018

С точки зрения Terraform, виртуальная машина Windows действительно очень похожа на виртуальную машину Linux.Разница № 1, на мой взгляд, заключается в том, что для виртуальной машины Windows требуется атрибут os_profile_windows_config, а для виртуальной машины Linux - os_profile_linux_config.

Код TF, найденный на сайте Microsoft, является хорошим началом.Кроме того, вы можете посмотреть в Terraform Registry .Например, вот модуль для виртуальной машины Linux .

Я настоятельно рекомендую прочитать все параметры в ресурсе VM .Я знаю, что это много, но вы должны понимать, какой у вас есть выбор.

Наконец, нет никакой альтернативы написанию некоторого кода и его тестированию.Если вы делаете что-то не так, Terraform и / или API Azure сообщит вам, а если неясно, при поиске в Интернете появится ответ или указатель в правильном направлении.

Удачи!

...