0

Я определил CustomScriptExtension для Azure VM в терраформировать:Определение Azure VM CustomScriptExtension в терраформировать (Ожидая состояние 'Element' .. Засада 'Текст' с именем '', пространство имен '' . "")

resource "azurerm_virtual_machine_extension" "test" { 
    name = "WinRM" 
    location = "South Central US" 
    resource_group_name = "${azurerm_resource_group.test.name}" 
    virtual_machine_name = "${azurerm_virtual_machine.test.name}" 
    publisher = "Microsoft.Compute" 
    type = "CustomScriptExtension" 
    type_handler_version = "1.8" 

    settings = <<SETTINGS 
    { 
     "fileUris": "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1", 
     "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File ConfigureRemotingForAnsible.ps1" 
    } 
SETTINGS 

} 

Однако я получаю (та же ошибка видна в Azure портала в расширениях VM):

azurerm_virtual_machine_extension.test: compute.VirtualMachineExtensionsClient#CreateOrUpdate: Failure sending request: StatusCode=200 -- Original Error: Long running operation terminated with status 'Failed': Code="VMExtensionProvisioningError" Message="VM has reported a failure when processing extension 'WinRM'. Error message: \"Invalid handler configuration. Exiting. Error Message: Expecting state 'Element'.. Encountered 'Text' with name '', namespace ''. \"."

Те же параметры, выполненные в качестве Azure deployment работ без каких-либо проблем (соответствующие выдержки ниже):

"fileUris": { 
    "type": "string", 
    "defaultValue": "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1", 
    "metadata": { 
    "description": "The uri list of files. Split by a space." 
    } 
}, 
"settings": { 
    "fileUris": "[split(parameters('fileUris'), ' ')]", 
    "commandToExecute": "[parameters('commandToExecute')]" 
} 

Am я что-то отсутствует, или это ошибка в терраформировать?


Некоторые отладки:

  • Если я заменяю настройки с помощью всего:

    { 
        "commandToExecute": "mkdir C:\\Test" 
    } 
    

    каталог получает создан, так что проблема с fileUris.

  • Если я заменяю fileUris в формате JSON настроек с fileUri (который должен быть неправильно):

    { 
        "fileUri": "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1", 
        "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File ConfigureRemotingForAnsible.ps1" 
    } 
    

    нет ошибки Encountered 'Text' with name '', namespace ''. \"., powershell.exe пожаров и отчеты отсутствует ConfigureRemotingForAnsible.ps1.

ответ

1

Error message: \"Invalid handler configuration. Exiting. Error Message: Expecting state 'Element'.. Encountered 'Text' with name '', namespace ''. \"."

Как я знал, тип значения fileUris должен быть массив, я проверил его с развертыванием Azure, если настроить fileUris как значение строки, то я мог бы получить ту же ошибку как вы предоставили.

enter image description here

UPDATE

fileUris должен выглядеть следующим образом:

"settings": { 
    "fileUris": [ 
    "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1" 
    ], 
    "commandToExecute": "powershell.exe -ExecutionPolicy Unrestricted -File ConfigureRemotingForAnsible.ps1" 
} 
+0

Интересно ... Развертывание RM, который я связан, также использует значение строки, но не вызывает никаких ошибок. Позаботьтесь об этом позже. Спасибо за предложение. – techraf

+1

Вот конфигурация для ** fileUris ** '" fileUris ":" [split (parameters ('fileUris'), '')] "' в вашей предоставленной ссылке. –

+0

О, я вижу, где я сбился с пути. – techraf