如何使用Azure ARM创建公共虚拟机映像?
我想创建一个任何人都可以使用armrestapi启动的虚拟机如何使用Azure ARM创建公共虚拟机映像?,azure,azure-virtual-machine,azure-resource-manager,Azure,Azure Virtual Machine,Azure Resource Manager,我想创建一个任何人都可以使用armrestapi启动的虚拟机 我该怎么做?我找不到说明。显然可以在此处创建公共虚拟机映像:有几种方法可以做到这一点。假设你有一个网站/应用程序等在前端,它只是后端通信你正在寻找 先决条件 此处的选项假定您有一个活动的Microsoft Azure帐户,并且能够通过门户在那里创建VM。一旦到了可以这样做的阶段,就可以使用RESTAPI来创建一台机器 选择1 您可以使用RESTAPI直接创建VM,方法是PUTing请求到此URI- https://management
我该怎么做?我找不到说明。显然可以在此处创建公共虚拟机映像:有几种方法可以做到这一点。假设你有一个网站/应用程序等在前端,它只是后端通信你正在寻找 先决条件 此处的选项假定您有一个活动的Microsoft Azure帐户,并且能够通过门户在那里创建VM。一旦到了可以这样做的阶段,就可以使用RESTAPI来创建一台机器 选择1 您可以使用RESTAPI直接创建VM,方法是
PUT
ing请求到此URI-
https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachines/{vm-name}?validating={true|false}&api-version={api-version}
您需要将一个JSON文档附加到该请求,该请求将定义您正在创建的机器
{
"id":"/subscriptions/{subscription-id}/resourceGroups/myresourcegroup1/providers/Microsoft.Compute/virtualMachines/myvm1",
"name":"myvm1",
"type":"Microsoft.Compute/virtualMachines",
"location":"westus",
"tags": {
"department":"finance"
},
"properties": {
"availabilitySet": {
"id":"/subscriptions/{subscription-id}/resourceGroups/myresourcegroup1/providers/Microsoft.Compute/availabilitySets/myav1"
},
"hardwareProfile": {
"vmSize":"Standard_A0"
},
"storageProfile": {
"imageReference": {
"publisher":"MicrosoftWindowsServerEssentials",
"offer":"WindowsServerEssentials",
"sku":"WindowsServerEssentials",
"version":"latest"
},
"osDisk": {
"name":"myosdisk1",
"vhd": {
"uri":"http://mystorage1.blob.core.windows.net/vhds/myosdisk1.vhd"
},
"caching":"ReadWrite",
"createOption":"FromImage"
},
"dataDisks": [ {
"name":"mydatadisk1",
"diskSizeGB":"1",
"lun": 0,
"vhd": {
"uri" : "http://mystorage1.blob.core.windows.net/vhds/mydatadisk1.vhd"
},
"createOption":"Empty"
} ]
},
"osProfile": {
"computerName":"myvm1",
"adminUsername":"username",
"adminPassword":"password",
"customData":"",
"windowsConfiguration": {
"provisionVMAgent":true,
"winRM": {
"listeners": [ {
"protocol": "https",
"certificateUrl": "url-to-certificate"
} ]
},
"additionalUnattendContent": {
"pass":"oobesystem",
"component":"Microsoft-Windows-Shell-Setup",
"settingName":"FirstLogonCommands|AutoLogon",
"content":"<XML unattend content>"
}
"enableAutomaticUpdates":true
},
"secrets":[ {
"sourceVault": {
"id": "/subscriptions/{subscription-id}/resourceGroups/myresourcegroup1/providers/Microsoft.KeyVault/vaults/myvault1"
},
"vaultCertificates": [ {
"certificateUrl": "https://myvault1.vault.azure.net/secrets/{secretName}/{secretVersion}"
"certificateStore": "{certificateStoreName}"
} ]
} ]
},
"networkProfile": {
"networkInterfaces": [ {
"id":"/subscriptions/{subscription-id}/resourceGroups/myresourceGroup1/providers /Microsoft.Network/networkInterfaces/mynic1"
} ]
}
}
}
你可以在-找到这方面的文档,这是为了详细说明@Michael B的答案:要发现可用的图像,你可以使用VMDepot,当然也可以。首先查看出版商列表,然后从那里你可以决定你想要哪些图片
您发现的URN值将是您希望在REST调用中使用的值。希望这有帮助……任何人都可以启动的虚拟机是什么意思?您是否可以指定是否希望通过Azure portal、C#或PowerShell执行此操作?这是一些可以使用ARM REST API创建Azure VM的选项。这是一个非常模糊的问题,我怀疑您在某个地方遗漏了一点,但很难说这是什么,因为所需的信息不存在。@Duke Dougal你找到了实现这一点的方法吗?@webfort太难了,我放弃了,并采取了另一种方法来解决我的问题。不过,等式中缺少了一个很大的部分-我如何确定将运行的公共VM?VM仓库似乎没有提供我需要插入到您上面提供的数据结构中的信息。Azure Marketplace似乎也没有提供将公共虚拟机连接到您上面指定的数据结构的方法。@DukeDougal我对答案进行了一些编辑-但是它确实取决于您所说的“公共”虚拟机的含义,考虑到您使用的是Azure标记,此答案假设您希望通过Azure部署,在这种情况下,您需要有一个活动帐户,并在某个时候为您使用的资源付费。vmdepot只是一个存储虚拟机映像的存储库,vmdepot没有任何能力运行这些映像,您需要在云提供商中启动它们。
{
"properties": {
"templateLink": {
"uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
"contentVersion": "1.0.0.0",
},
"mode": "Incremental",
"parametersLink": {
"uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
"contentVersion": "1.0.0.0",
}
}
}