Azure运维系列 8:使用现有磁盘创建虚拟机

简介:

今天跟大家分享一个在Azure日常运维中经常会用到的技巧,通过存储在存储帐户中的VHD快速创建虚拟机。整体的步骤非常简单,需要使用到带有Azure模块的PowerShell。如果没有安装请通过以下地址进行安装:


首先,我们需要找到我们事先准备好的虚拟机OS磁盘VHDURL地址。在Azure门户中找到对应的存储帐户:



然后在存储帐户中找到Blob存储。



找到对应的VHD文件,并复制它的URL



最新版Azure PowerShell 下载地址:

https://github.com/Azure/azure-powershell/releases



关于更多安装和使用Azure PowerShell的文章请浏览:

http://reinember.blog.51cto.com/2919431/1857099


装好Azure PowerShell,然后我们首先登录Azure RM帐号。通过以下命令:

Login-AzureRmAccount

如果是中国版Azure,必须加上-EnvironmentName AzureChinaCloud



登录好后会显示我们的订阅信息,请确认订阅ID和订阅名称。


然后我们就需要定义一些变量,为我们创建虚拟机做准备。

首先是通过以下来定义虚拟机名称:

$VMName = "xxx"

然后是指定资源组:

$ResourceGroup = "xxx"



然后创建或选择现有的虚拟网络,并指定虚拟网络的子网ID

$vnet = Get-AzureRmVirtualNetwork -Name <VNET Name> -ResourceGroupName $resourceGroup

$subnet01 = Get-AzureRmVirtualNetworkSubnetConfig -Name <Subnet Name> -VirtualNetwork $vnet



然后我们需要创建一个公网IP地址,通过以下命令:

$publicIP = New-AzureRmPublicIpAddress -Name <IP Name> -ResourceGroupName $resourceGroup -Location "China East" -AllocationMethod Static -IpAddressVersion IPv4 Force


然后创建虚拟机的网卡,其中需要指定虚拟网络对应子网中虚拟机的IP地址即内网IP地址:

$NIC = New-AzureRmNetworkInterface -Name <Network Interface Name> -ResourceGroupName $resourceGroup -Location "China East" -SubnetId $subnet01.Id -PublicIpAddressId $publicIP.Id -PrivateIpAddress <Internal IP Address>


然后需要配置配置要使用的存储账号以及系统盘名称,最重要的是虚拟磁盘的位置,就是第一步中我们复制的URL

$storage = Get-AzureRmStorageAccount -Name <storage account name> -ResourceGroupName $resourceGroup

$OSDiskName = $vmname + "_OSDisk"

$OSDiskUrl = "https://xxx/vhds/xxx.vhd"



到此我们的准备工作就已经完成了,然后需要将以上的配置信息生成虚拟机的配置:

$vmconfig = New-AzureRmVMConfig -VMName $vmname -VMSize Standard_A1 | Set-AzureRmVMOSDisk Name$OSDiskName -VhdUri $OSDiskUrl -CreateOption attach -Windows | Add-AzureRmVMNetworkInterface -Id $NIC.Id -Primary



然后通过PowerShell创建新的资源组类型虚拟机:

New-AzureRmVM -ResourceGroupName $ResourceGroup -Location "China East" -VM $vmconfig



稍等片刻,回到我们的Azure管理门户中,就可以看到虚拟机已经正在创建了。


以上步骤和操作适用于:


Global Azure

China Azure

虚拟机

云服务



什么情况需要使用自定义磁盘创建虚拟机呢?



比如虚拟机是由其他订阅迁移过来的,或是不小心删除掉虚拟机磁盘仍然存在的情况。希望以上内容对有需要的朋友能够有所帮助。








 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/reinember/1977539,如需转载请自行联系原作者

相关文章
|
1月前
|
KVM 虚拟化
kvm虚拟机磁盘管理
文章详细介绍了KVM虚拟机磁盘管理,包括磁盘格式概述、创建虚拟机时如何指定磁盘格式、以及磁盘工具的常用命令,旨在帮助用户更好地理解和操作KVM虚拟机的磁盘管理。
53 1
kvm虚拟机磁盘管理
|
5天前
|
Kubernetes Linux 容器
解决删除快照后启动虚拟机显示指定的文件不是虚拟磁盘 打不开磁盘“路径”或它所依赖的某个快照磁盘。 模块“disk”启动失败。 未能启动虚拟
解决删除快照后启动虚拟机显示指定的文件不是虚拟磁盘 打不开磁盘“路径”或它所依赖的某个快照磁盘。 模块“disk”启动失败。 未能启动虚拟
|
2月前
|
安全
【Azure 云服务】Azure Cloud Service 关于虚拟机资源,杀毒软件配置,补丁机制的问答
【Azure 云服务】Azure Cloud Service 关于虚拟机资源,杀毒软件配置,补丁机制的问答
|
2月前
|
API 网络架构 开发者
【Azure 环境】调用Azure RunCommand 的REST API 设置虚拟机的环境变量(SetEnvironmentVariable)
【Azure 环境】调用Azure RunCommand 的REST API 设置虚拟机的环境变量(SetEnvironmentVariable)
|
2月前
|
安全 Windows
【Azure 环境】Azure 的PaaS服务如果涉及到安全漏洞问题后,我们如何确认所用服务的实例(VM:虚拟机)的操作系统已修复该补丁呢?
【Azure 环境】Azure 的PaaS服务如果涉及到安全漏洞问题后,我们如何确认所用服务的实例(VM:虚拟机)的操作系统已修复该补丁呢?
|
2月前
|
安全 网络安全
【Azure 环境】当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口?
【Azure 环境】当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口?
|
2月前
|
API 网络架构
【Azure Developer】如何通过Azure REST API 获取到虚拟机(VM)所使用的公共IP地址信息
【Azure Developer】如何通过Azure REST API 获取到虚拟机(VM)所使用的公共IP地址信息
|
2月前
|
JSON API 网络架构
【Azure Developer】Azure REST API: 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk
【Azure Developer】Azure REST API: 如何通过 API查看 Recovery Services Vaults(恢复保管库)的备份策略信息? 如备份中是否含有虚拟机的Disk
|
2月前
|
存储 API 开发工具
【Azure 环境】在Azure虚拟机(经典) 的资源中,使用SDK导出VM列表的办法
【Azure 环境】在Azure虚拟机(经典) 的资源中,使用SDK导出VM列表的办法
|
2月前
|
Java 数据安全/隐私保护 Windows
【Azure Developer】使用Java代码启动Azure VM(虚拟机)
【Azure Developer】使用Java代码启动Azure VM(虚拟机)