Terraform azurerm_virtual_machine_extension error "операции расширения запрещены" - PullRequest
0 голосов
/ 30 сентября 2019

Я написал шаблон Terraform, который создает виртуальную машину Windows Azure. Мне нужно настроить виртуальную машину для включения PowerShell Remoting для конвейера выпуска, чтобы иметь возможность выполнять сценарии Powershell. После создания виртуальной машины я могу выполнить RDP к виртуальной машине и сделать все, что мне нужно для включения удаленного взаимодействия Powershell, однако было бы идеально, если бы я мог все это написать в сценарии, чтобы он мог выполняться в конвейере выпуска. Есть две вещи, которые мешают этому.

Первое, и тема этого вопроса заключается в том, что мне нужно запустить "WinRM quickconfig". У меня есть шаблон, работающий так, что когда я выполняю RDP для виртуальной машины, после создания, что при запуске WinRM quickconfig я получаю следующие ответы:

WinRM service is already running on this machine.
WinRM is not set up to allow remote access to this machine for management.
The following changes must be made:

Configure LocalAccountTokenFilterPolicy to grant administrative rights remotely to local users.

Make these changes [y/n]?

Я хочу настроить виртуальную машину в Terraform такLocalAccountTokenFilterPolicy установлен, и становится ненужным RDP к виртуальной машине для запуска "быстрой настройки WinRM". После некоторых исследований я смог сделать это с помощью ресурса azure_virtual_machine_extension. Я добавляю это к моему шаблону:

resource "azurerm_virtual_machine_extension" "vmx" {
  name                 = "hostname"
  location             = "${var.location}"
  resource_group_name  = "${var.vm-resource-group-name}"
  virtual_machine_name = "${azurerm_virtual_machine.vm.name}"
  publisher            = "Microsoft.Azure.Extensions"
  type                 = "CustomScript"
  type_handler_version = "2.0"

settings = <<SETTINGS
    {
          # "commandToExecute": "powershell Set-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System' -Name 'LocalAccountTokenFilterPolicy' -Value 1 -Force"
    }
SETTINGS
}

Когда я применяю это, я получаю ошибку:

Error: compute.VirtualMachineExtensionsClient#CreateOrUpdate: Failure sending request: StatusCode=0 -- Original Error: autorest/azure: Service returned an error. Status=<nil> Code="OperationNotAllowed" Message="This operation cannot be performed when extension operations are disallowed. To allow, please ensure VM Agent is installed on the VM and the osProfile.allowExtensionOperations property is true."

Я не смог найти документацию Terraform, которая описывает, как установить allowExtensionOperationsсвойство к истине. По какой-то причине я попытался добавить свойство «allow_extension_operations» в блок os_profile в ресурсе azurerm_virtual_machine, но оно было отклонено как недопустимое свойство. Я также попытался добавить его в блок os_profile_windows_config и там тоже недопустимо.

Я нашел в документации Microsoft утверждение, касающееся свойства osProfile.allowExtensionOperations, которое гласит:

"Этоможет быть установлено в значение False, если на виртуальной машине отсутствуют расширения. "

https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.management.compute.models.osprofile.allowextensionoperations?view=azure-dotnet

Это означает, что для свойства по умолчанию установлено значение True, но оно не 'это на самом деле не говорит, и это, конечно, не так. В Terraform есть способ установить значение true для osProfile.alowExtensionOperations?

...