作为标题,我删除了VMAccessForLinux扩展。 但是,没有办法取回扩展程序。
如何在我的VM上重新安装扩展程序?
在使用Azure CLI的情况下,它会出现如下错误:
2016年2月24日星期三20:56:17 GMT + 0900(KST): {[错误:对角色的扩展引用的更新无效:Look360VM和引用:VMAccessForLinux。] 代码:'BadRequest', statusCode:400, requestId:'36d5f8a1bcd37ce480e26e31a2742249'} 错误:对角色的扩展引用的更新无效:Look360VM和引用:VMAccessForLinux。 在Function.ServiceClient._normalizeError(/usr/local/azure/node_modules/azure-common/lib/services/serviceclient.js:815:23) at /usr/local/azure/node_modules/azure-common/lib/services/filters/errorhandlingfilter.js:44:29 在Request._callback(/usr/local/azure/node_modules/azure-common/lib/http/request-pipeline.js:109:14) 在Request.self.callback(/usr/local/azure/node_modules/azure-common/node_modules/request/request.js:199:22) 在Request.emit(events.js:110:17) 在请求。 (/usr/local/azure/node_modules/azure-common/node_modules/request/request.js:1160:14) 在Request.emit(events.js:129:20) 在IncomingMessage。 (/usr/local/azure/node_modules/azure-common/node_modules/request/request.js:1111:12) 在IncomingMessage.emit(events.js:129:20) at _stream_readable.js:908:16
它说'BadRequest'。我不知道为什么,但可能是我删除了扩展名。
如果您有经验,请评论解决方案。 感谢。
答案 0 :(得分:2)
在当前的Azure CLI中,假设您正在进行ARM部署,请始终使用实用程序命令azure vm reset-access
及其参数来执行此工作。这是最简单的方法,因为你不必担心json的东西....
azure vm reset-access --help
help: Enables you to reset Remote Desktop Access or SSH settings on a Virtual Machine and to reset the password for the account that has administrator or sudo authority.
help:
help: Usage: vm reset-access [options] <resource-group> <name>
help:
help: Options:
help: -h, --help output usage information
help: -v, --verbose use verbose output
help: -vv more verbose with debug output
help: --json use json output
help: -g, --resource-group <resource-group> the resource group name
help: -n, --name <name> the virtual machine name
help: -u, --user-name <user-name> the user name
help: -p, --password <password> the password
help: -M, --ssh-key-file <ssh-key-file> path to public key PEM file or SSH Public key file for SSH authentication (valid only when os-type is "Linux")
help: -r, --reset-ssh Reset the SSH configuration to default
help: -E, --extension-version <version> Version of VM Access extension [1.4]
help: -e, --expiration <expiration> password expiration
help: -R, --remove-user <remove-user-name> Remove a user account with specified name
help: -s, --subscription <subscription> the subscription identifier
help:
help: Current Mode: arm (Azure Resource Management)
答案 1 :(得分:1)
我得到了与使用Azure CLI将扩展程序安装到我的VM时所做的确切错误。我还没有确定根本原因。但是,我有另一种方法来安装扩展,而不是使用Azure PowerShell。
这是命令:
$vm = Get-AzureVm -ServiceName <your cloud service> -Name <your vm>
Set-AzureVMExtension -ExtensionName "VMAccessForLinux" -VM $vm `
-Publisher "Microsoft.OSTCExtensions" -Version "1.*" | Update-AzureVM
经过几次挖掘后,我找到了根本原因。您需要为“VMAccessForLinux”指定“参考名称”,即“Microsoft.OSTCExtensions.VMAccessForLinux”。对于azure vm extension set
,默认情况下,它使用扩展名作为引用名称,适用于大多数扩展。但是,“VMAccessForLinux”并非如此。
这是命令:
azure vm extension set "<your VM>" "VMAccessForLinux" "Microsoft.OSTCExtensions" "1.*" -r "Microsoft.OSTCExtensions.VMAccessForLinux"
答案 2 :(得分:0)
发布答案以启用新的资源管理器VM:
$RGName = "<Rg name>"
$VmName = "<Vm name>"
$Location = '<VM Location>'
$ExtensionName = 'VMAccessForLinux'
$Publisher = 'Microsoft.OSTCExtensions'
$Version = '1.4'
$PublicConf = '{}'
$PrivateConf = '{
"username": "<new username>",
"password": "<new password>",
"reset_ssh": true
}'
Set-AzureRmVMExtension -ResourceGroupName $RGName -VMName $VmName -Location $Location -Name $ExtensionName -Publisher $Publisher -ExtensionType $ExtensionName -TypeHandlerVersion $Version -Settingstring $PublicConf -ProtectedSettingString $PrivateConf
有关详细信息,请参阅https://github.com/Azure/azure-linux-extensions/tree/master/VMAccess。