Передача пользовательских данных на виртуальную машину Azure с помощью Terraform: несколько методов, объясненных примерами кода

В этой статье блога мы рассмотрим несколько методов передачи пользовательских данных на виртуальную машину (ВМ) Azure с помощью Terraform. Пользовательские данные позволяют загрузить виртуальную машину с помощью сценариев, конфигураций или любых других данных, которые необходимо передать во время подготовки. Мы предоставим примеры кода для каждого метода, чтобы помочь вам понять, как реализовать их в вашей инфраструктуре в виде рабочих процессов кода (IaC).

Метод 1. Использование аргумента «custom_data» в Terraform
Самый простой способ передать пользовательские данные на виртуальную машину Azure — использовать аргумент «custom_data» в блоке ресурсов виртуальной машины. Этот аргумент принимает строку в кодировке Base64, которая может содержать нужные данные.

Пример:

resource "azurerm_virtual_machine" "example" {
  # VM configuration...
  custom_data = base64encode(file("scripts/bootstrap.sh"))
}

Метод 2. Использование аргументов «os_profile» и «custom_data» в Terraform
Другой способ передачи пользовательских данных — использование аргументов «os_profile» и «custom_data» в блоке ресурсов «azurerm_virtual_machine». Этот метод обеспечивает большую гибкость, поскольку вы можете определить дополнительные свойства, такие как команда выполнения сценария.

Пример:

resource "azurerm_virtual_machine" "example" {
  # VM configuration...
  os_profile {
    custom_data = base64encode(file("scripts/bootstrap.sh"))
  }
}

Метод 3. Использование Azure CLI и команды «az VM Extension Set».
В качестве альтернативы вы можете использовать Azure CLI с командой «az VM Extension Set» для передачи пользовательских данных на виртуальную машину. Этот метод позволяет выполнять сценарии непосредственно на виртуальной машине во время подготовки.

Пример:

az vm extension set \
  --resource-group my-resource-group \
  --vm-name my-vm \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --settings '{"commandToExecute": "sh scripts/bootstrap.sh"}'

Метод 4. Использование расширения пользовательских сценариев Azure
Расширение пользовательских сценариев Azure — это мощная функция, позволяющая запускать пользовательские сценарии на виртуальных машинах Azure. Вы можете использовать Terraform для подготовки и настройки этого расширения для выполнения нужных сценариев во время подготовки виртуальной машины.

Пример:

resource "azurerm_virtual_machine_extension" "example" {
  name                 = "customScript"
  virtual_machine_id   = azurerm_virtual_machine.example.id
  publisher            = "Microsoft.Azure.Extensions"
  type                 = "CustomScript"
  type_handler_version = "2.0"
  settings = <<SETTINGS
    {
      "commandToExecute": "sh scripts/bootstrap.sh"
    }
  SETTINGS
}

В этой статье мы рассмотрели несколько методов передачи пользовательских данных на виртуальную машину Azure с помощью Terraform. Используя аргумент «custom_data», блок «os_profile», Azure CLI и расширение пользовательских сценариев Azure, вы можете легко загрузить свои виртуальные машины с помощью сценариев и конфигураций. Эти методы обеспечивают гибкость и автоматизацию процесса предоставления инфраструктуры.