How to create azurerm_virtual_machine_extension with a network watcher installed

Viewed 142

How to create azurerm_virtual_machine_extension with a network watcher installed. using a Powershell Script.

resource "azurerm_virtual_machine_extension" "example" {
  name                 = "hostname"
  virtual_machine_id   = azurerm_virtual_machine.example.id
  publisher            = "Microsoft.Azure.Extensions"
  type                 = "CustomScript"
  type_handler_version = "2.0"

  settings = <<SETTINGS
    {
        "commandToExecute": "hostname && uptime"
    }
SETTINGS


  tags = {
    environment = "Production"
  }
}
1 Answers

You can use this below terraform code to achive your requirement.

main.tf

provider "azurerm" {
  features {}
}

data "azurerm_resource_group" "example" {
  name     = "v-raXXXX-XXX"
  #location = "West Europe"
}

resource "azurerm_virtual_network" "example" {
  name                = "example-network"
  address_space       = ["10.0.0.0/16"]
  location            = data.azurerm_resource_group.example.location
  resource_group_name = data.azurerm_resource_group.example.name
}

resource "azurerm_subnet" "example" {
  name                 = "internal"
  resource_group_name  = data.azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = ["10.0.2.0/24"]
}

resource "azurerm_network_interface" "example" {
  name                = "example-nic"
  location            = data.azurerm_resource_group.example.location
  resource_group_name = data.azurerm_resource_group.example.name

  ip_configuration {
    name                          = "internal"
    subnet_id                     = azurerm_subnet.example.id
    private_ip_address_allocation = "Dynamic"
  }
}

resource "azurerm_windows_virtual_machine" "example" {
  name                = "example-machine"
  resource_group_name = data.azurerm_resource_group.example.name
  location            = data.azurerm_resource_group.example.location
  size                = "Standard_F2"
  admin_username      = "adminuser"
  admin_password      = "P@$$w0rd1234!"
  network_interface_ids = [
    azurerm_network_interface.example.id,
  ]

  os_disk {
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }

  source_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2016-Datacenter"
    version   = "latest"
  }
}

locals {
  powershell_command = "Set-AzVMExtension -ResourceGroupName ${var.resource_group_name} -Location ${var.location} -VMName ${var.VM_Name}"
}


resource "azurerm_virtual_machine_extension" "example" {
  name                 = "hostname2"
  virtual_machine_id   = azurerm_windows_virtual_machine.example.id
  publisher            = "Microsoft.Azure.NetworkWatcher"
  type                 = "NetworkWatcherAgentWindows"
  type_handler_version = "1.4"

  settings = <<SETTINGS
    {
        "commandToExecute": "powershell.exe -Command \"${local.powershell_command}\""
    }
SETTINGS
  tags = {
    environment = "Production"
  }

  depends_on = [
    azurerm_windows_virtual_machine.example
  ]
}

variable.tf

variable "resource_group_name" {
  default = "v-rXXXX-XXXee"
}

variable "location" {
  default="West US 2"
}

variable "VM_Name" {
  default = "example-machine"
}

OutPut--

enter image description here

enter image description here

Related