У меня есть шаблон Azure ARM, который должен создавать виртуальную машину Linux с помощью установки пользовательских расширений из BLOB-объекта хранилища Azure.
После установки виртуальной машины Linux мне нужно запустить собственный сценарий, используя Azure CustomScriptForLinux
. Поэтому второй скрипт должен зависеть от установки MicrosoftScriptExtension
. Вот пример, который показывает, как я пытался записать это в шаблон ARM:
{
"apiVersion": "2016-04-30-preview",
"type": "Microsoft.Compute/virtualMachines",
"name": "[variables('vmName')]",
"location": "[resourceGroup().location]",
"tags": "[parameters('tagValues')]",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]",
"[concat('Microsoft.Compute/availabilitySets/', parameters('availabilitySetName'))]"
],
"properties": {
"availabilitySet": {
"id": "[resourceId('Microsoft.Compute/availabilitySets', parameters('availabilitySetName'))]"
},
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"osProfile": {
"computerName": "[variables('vmName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]"
},
"storageProfile": {
"dataDisks": "[take(variables('diskArray'), parameters('numDataDisks'))]",
"imageReference": {
"publisher": "[variables('images')[parameters('osType')].publisher]",
"offer": "[variables('images')[parameters('osType')].offer]",
"sku": "[variables('images')[parameters('osType')].sku]",
"version": "latest"
},
"osDisk": {
"name": "[concat(parameters('vmDnsName'),'-osDisk')]",
"caching": "ReadWrite",
"managedDisk": {
"storageAccountType": "[parameters('storageAccountType')]"
},
"createOption": "FromImage"
}
},
"networkProfile": {
"networkInterfaces": [{
"id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
}]
}
},
"resources": [{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(variables('vmName'),'/', variables('vmScriptExtensionName'))]",
"apiVersion": "2016-04-30-preview",
"location": "[resourceGroup().location]",
"tags": "[parameters('tagValues')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
],
"properties": {
"publisher": "[variables('extension')[parameters('os')].scriptExtensionPublisher]",
"type": "[variables('extension')[parameters('os')].scriptExtensionType]",
"typeHandlerVersion": "[variables('extension')[parameters('os')].scriptExtensiontypeHandlerVersion]",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"[variables('scriptURI')]",
"[variables('scriptURI_installchef_data_bag_secret')]",
"[variables('scriptURI_installchef_data_bag_secret_flc')]",
"[variables('scriptURI_installchef_data_bag_secret_dct')]",
"[variables('scriptURI_installchef_data_bag_secret_powershell')]",
"[variables('scriptURIsetup')]",
"[variables('scriptURIsetupFLC')]",
"[variables('scriptURIsetupDCT')]",
"[variables('scriptURIpartition')]"
],
"commandToExecute": "[variables('extension')[parameters('os')].scriptExtensionCommand]"
},
"protectedSettings": {
"storageAccountName": "[parameters('customScriptStorageAccountName')]",
"storageAccountKey": "[parameters('customScriptStorageAccountKey')]"
}
}
}]
},
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(variables('vmName'),'/', variables('extension')[parameters('os')].chefExtensionName)]",
"apiVersion": "2016-04-30-preview",
"location": "[resourceGroup().location]",
"tags": "[parameters('tagValues')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]",
"[resourceId('Microsoft.Compute/virtualMachines/extensions', variables('vmName'), variables('vmScriptExtensionName'))]"
],
"properties": {
"publisher": "Chef.Bootstrap.WindowsAzure",
"type": "[variables('extension')[parameters('os')].chefExtensionName]",
"typeHandlerVersion": "1210.12",
"settings": {
"bootstrap_options": {
"chef_node_name": "[variables('vmName')]",
"chef_server_url": "[parameters('chef_server_url')]",
"validation_client_name": "[parameters('validation_client_name')]",
"node_ssl_verify_mode": "none",
"environment": "[parameters('chef_environment')]"
},
"runlist": "[parameters('runlist')]",
"bootstrap_version": "12.19.36",
"validation_key_format": "[parameters('validation_key_format')]",
"client_rb": "ssl_verify_mode :verify_none\nverify_api_cert false\n#"
},
"protectedSettings": {
"validation_key": "[parameters('validation_key')]",
"secret": "[parameters('data_bag_secret')]"
}
}
}
Если я запускаю этот шаблон ARM, я получаю ошибку
Ресурс Microsoft.Compute / virtualMachines / extensions 'VMName / MicrosoftScriptExtension' завершился ошибкой с сообщением '{
"status": "Failed",
"ошибка": {
"code": "ResourceDeploymentFailure",
"message": "Операция ресурса завершена с состоянием инициализации терминала" Failed ".",
"подробности": [
{
"code": "VMExtensionProvisioningError",
«message»: «ВМ сообщила об ошибке при обработке расширения« MicrosoftScriptExtension ». Сообщение об ошибке: \« Не удалось включить: загрузка файла не удалась: не удалось загрузить файл [0]: не удалось загрузить файл: http-запрос не выполнен: Get https://XXXXXXX.blob.core.windows.net/scripts/vm-disk-utils-RAID0.sh?se=2018-05-07T16%3A08%3A22Z&sig=XXXXXXXXXXXXX%3D&sp=r&sr=b&sv=2015-02-21: набрать tcp: тайм-аут ввода-вывода \ "."
}
]
}
Не понимаю, почему?
Любая помощь приветствуется.