日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARM 环境下使用azure powershell 从远程blob中拉去vhd 并创建虚拟机

發布時間:2024/8/24 编程问答 41 如意码农
生活随笔 收集整理的這篇文章主要介紹了 ARM 环境下使用azure powershell 从远程blob中拉去vhd 并创建虚拟机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近需要從指定公共訪問的blob中復制vhd到自己的訂閱存儲賬戶,并使用vhd創建AZURE ARM虛擬機(非經典版),而且在portal.azure.cn中無法實現虛擬機映像創建等功能,于是自己使用azure powershell寫了一個簡單的腳本,

前期準備:

1、在ARM環境下,創建一個普通存儲(切記一定要是普通存儲,高級存儲無法創建虛擬機),不要創建成經典版

2、將新建的普通存儲名稱和key填入到以下腳本中

備注:創建虛擬機時,腳本會自動將vhd復制一份作為系統盤,切記,指定系統盤的位置要和拷貝后vhd放于同一個blob中,不然會報錯誤

腳本簡介:

運行腳本會自動從源blob中(本腳本是匿名方式拷貝,所以對方存儲必須為公共存儲)拷貝vhd文件到指定訂閱的存儲賬戶(必須有key),拷貝成功后開始創建ARM 虛擬機,此腳本適合單獨創建虛擬機

創建說明:拷貝vhd文件到普通存儲()

#源存儲blob信息- VHD所在的存儲地址
$sourceStorageAccountName = "{存儲賬戶名稱}" #存儲賬戶名稱
$sourceContainerName = "{容器名稱}" #容器名稱
$fileName="xxxx.vhd" #容器中文件的名稱及擴張名

 #目標存儲信息---- 從isv復制到經典存儲中速度快,建議配置成經典的存儲地址
$destStorageAccountName ="{目標存儲賬戶}" #目標存儲賬戶名稱--要拷貝到自己賬戶的存儲名稱
$destContainerName ="{容器名稱}" #VHD所在容器名稱- 要小寫字母
$destStorageAccountKey ="{存儲訪問key}"#key
#要創建資源組的名稱
$resourceGroupName="{資源組名稱}"
#虛擬機信息
$vmname = "RapidREVMA" #虛擬機名稱-虛擬機磁盤也會使用此名稱
$vmUser="azureuser"
$vmSize="Standard_A8_v2" #虛擬機大小:https://docs.microsoft.com/zh-cn/azure/cloud-services/cloud-services-sizes-specs#av2-series
$osType=0   #0-windows  1-Linux
#公共配置信息-默認即可,不用配置
$securePassword = ConvertTo-SecureString '{訂閱登錄密碼}' -AsPlainText -Force
$credlogin = New-Object System.Management.Automation.PSCredential ("xxxxxx@xxxxxxx.partner.onmschina.cn", $securePassword) #將xxxx更換為自己賬戶的信息即可
$endpoint="core.chinacloudapi.cn"
$fileAbsoluteUri="https://"+$sourceStorageAccountName+".blob."+$endpoint+"/"+$sourceContainerName+"/"+$fileName
$locationStr="China North"
$osdiskurl = "https://"+$destStorageAccountName+".blob."+$endpoint+"/"+$destContainerName+"/" #拷貝后的vhd所在存儲賬戶url地址(不包含文件名)
#開始復制
$sourceContext = New-AzureStorageContext -StorageAccountName $sourceStorageAccountName -Endpoint $endpoint -Anonymous;
$destContext = New-AzureStorageContext -StorageAccountName $destStorageAccountName -StorageAccountKey $destStorageAccountKey  -Endpoint $endpoint
$getdestContainerName=Get-AzureStorageContainer -Context $destContext -ErrorAction Stop | where-object {$_.Name -eq $destContainerName}
if(!$getdestContainerName)
{
    New-AzureStorageContainer -Name $destContainerName -Context $destContext
}
Start-AzureStorageBlobCopy  -AbsoluteUri $fileAbsoluteUri -DestContext $destContext -DestContainer $destContainerName -DestBlob $fileName
#Checking Status of Blob Copy -- This can be commented out if no confirmation is needed
$copyStatus=Get-AzureStorageBlobCopyState -Blob $fileName -Context $destContext -Container $destContainerName -WaitForComplete
if($copyStatus.Status -eq "Success")
{
Write-Host "copy finsh and start create vm"
#登錄并創建指定資源組
Login-AzureRmAccount -EnvironmentName AzureChinaCloud -Credential $credlogin
New-AzureRmResourceGroup -Name $resourceGroupName -Location $locationStr
# Create a subnet configuration
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name mySubnet -AddressPrefix 192.168.1.0/24
# Create a virtual network
$vnet = New-AzureRmVirtualNetwork -ResourceGroupName $resourceGroupName -Location $locationStr -Name MyVNet -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig -Force
#創建一個公網IP地址:
$publicIP=New-AzureRmPublicIpAddress -Name createstfromPIP -ResourceGroupName $resourceGroupName -Location $locationStr -AllocationMethod Dynamic -IpAddressVersion IPv4 -Force  #新建
Get-AzureRmPublicIpAddress -Name createstfromPIP -ResourceGroupName $resourceGroupName #查看剛剛創建的公網IP信息
#創建可用性集:
#$Availabilityset = New-AzureRmAvailabilitySet -Name cranetestAV -ResourceGroupName crane -Location $locationStr
#創建網卡:
$nic=New-AzureRmNetworkInterface -Name VHDNIC -ResourceGroupName $resourceGroupName -Location $locationStr -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $publicIP.Id -Force
#配置要使用的存儲賬號以及系統盤名稱:
#$storage = Get-AzureRmStorageAccount -Name cranenorthtest -ResourceGroupName $resourceGroupName
#$vmname = "whxCreateVmTest"
$osdiskname = $vmname + "_OSDisk"
#$osdiskurl = "https://ygwhxteststg.blob.core.chinacloudapi.cn/whx-vhd/community-15186-37f6baac-720f-4e49-b2f7-9c39f44a82f9-1.vhd"
$vmOsDisk =$osdiskurl+$osdiskname+".vhd"
$cred = New-Object System.Management.Automation.PSCredential ($vmUser, $securePassword)
$osdiskAbsoluteUri=$osdiskurl+$fileName
#生成虛擬機的配置,將新建的虛擬機放在虛擬網絡:
if($osType.Equals(1))#linux創建
{
$vmconfig = New-AzureRmVMConfig -VMName $vmname -VMSize $vmSize |`
Set-AzureRmVMOperatingSystem -Linux -ComputerName $vmname -Credential $cred| `
Set-AzureRmVMOSDisk -Name $osdiskname -VhdUri $vmOsDisk  -SourceImageUri $osdiskAbsoluteUri -CreateOption FromImage -Linux | `
Add-AzureRmVMNetworkInterface -Id $NIC.Id
}
if($osType.Equals(0)) #windows創建
{
$vmconfig = New-AzureRmVMConfig -VMName $vmname -VMSize $vmSize |`
Set-AzureRmVMOperatingSystem -Windows -ComputerName $vmname -Credential $cred| `
#-ProvisionVMAgent -EnableAutoUpdate | `
Set-AzureRmVMOSDisk -Name $osdiskname -VhdUri $vmOsDisk -SourceImageUri $osdiskAbsoluteUri -Caching "ReadWrite" -CreateOption FromImage -Windows | `
Add-AzureRmVMNetworkInterface -Id $nic.Id -Primary
}
#創建虛擬機:
New-AzureRmVM -ResourceGroupName $resourceGroupName -Location $locationStr -VM $vmconfig
$vmList = Get-AzureRmVM -ResourceGroupName $resourceGroupName
$vmList.Name
}
else
{
Write-Host "復制失敗或出現錯誤"
}

總結

以上是生活随笔為你收集整理的ARM 环境下使用azure powershell 从远程blob中拉去vhd 并创建虚拟机的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。