#powershell #terraform #terraform-provider-azure
#powershell #terraform #terraform-provider-azure
Вопрос:
Я создаю эти нижеприведенные расширения как часть модуля виртуальной машины через terraform. Создается первое расширение (расширение CustomScript).
resource "azurerm_virtual_machine_extension" "dsm_activate" {
name = "DSM-Activation_Extension"
virtual_machine_id = azurerm_virtual_machine.vm.id
publisher = "Microsoft.Compute"
type = "CustomScriptExtension"
type_handler_version = "1.9"
depends_on = [azurerm_virtual_machine.vm]
settings = <<-BASE_SETTINGS
{
"fileUris": ["https://sstsv2xxxxxxxtmztf.blob.core.windows.net/scripts/windows_dsm_activate.ps1"]
}
BASE_SETTINGS
protected_settings = <<-PROTECTED_SETTINGS
{
"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File windows_dsm_activate.ps1",
"storageAccountName": "${var.storage_account}",
"storageAccountKey": "${var.storage_account_key}"
}
PROTECTED_SETTINGS
}
resource "azurerm_virtual_machine_extension" "initialize_disk" {
name = "Initialize-Disk-VMExtension"
virtual_machine_id = azurerm_virtual_machine.vm.id
publisher = "Microsoft.Compute"
type = "CustomScriptExtension"
type_handler_version = "1.10"
depends_on = ["azurerm_virtual_machine.vm","azurerm_virtual_machine_extension.dsm_activate", "azurerm_virtual_machine_extension.da_extension","azurerm_virtual_machine_extension.nw_extension"]
settings = <<SETTINGS
{
}
SETTINGS
protected_settings = <<PROTECTED_SETTINGS
{
"commandToExecute": "powershell Initialize-Disk -FriendlyName (Get-Disk -Number 2).FriendlyName -PartitionStyle MBR -PassThru; powershell New-Partition -DiskNumber (Get-Disk -Number 2).DiskNumber -AssignDriveLetter -UseMaximumSize; powershell Format-Volume -DriveLetter F -FileSystem NTFS -NewFileSystemLabel 'DATA' -Confirm:0"
}
PROTECTED_SETTINGS
}
Однако код завершается с ошибкой, когда он пытается выполнить второе расширение customScriptExtension со следующей ошибкой:
Multiple VMExtensions per handler not supported for OS type 'Windows'. VMExtension with handler 'Microsoft.Compute.CustomScriptExtension' already added or specified in input
Как изменить приведенный выше сценарий, чтобы выполнялись оба пользовательских сценария.
Ответ №1:
Согласно документации Microsoft это не поддерживается. См . Примечание
На виртуальной машине в данный момент времени может быть установлена только одна версия расширения, при этом дважды указать пользовательский сценарий в одном и том же шаблоне диспетчера ресурсов для одной и той же виртуальной машины не удастся.
Не совсем ясно, две ли это версии, поскольку вы используете версии 1.9 и 1.10, или два расширения. Независимо от того, учитывая предоставленные дополнительные примеры, я бы посоветовал вам взять пример кода во втором расширении и создать файл для включения в ваше первое расширение fileUris .
Ответ №2:
Поддерживается выполнение нескольких сценариев, но вам необходимо встроить их выполнение в один основной файл powershell.
Просто создайте файл powershell, в котором вы выполняете два других файла, как описано в документации: