在進行與 azure 相關的自動化過程中,創建虛擬主機是避不開的操作。由于系統本身的復雜性,很難用一兩條簡單的命令完成虛擬主機的創建。所以專門寫一篇文章來記錄使用 PowerShell 在 azure 上創建虛擬主機(Ubuntu 服務器)。
虛擬主機虛擬主機需要與其他的一些基礎性組件關聯在一起才能提供可用的服務,這些組件包括:網卡、public IP 地址、虛擬網絡、網絡安全組、存儲等。下圖包含了新建一個虛機所需要的其他組件:
也就是說在我們創建虛機的同時也要把這些組件一一的創建出來。
定義變量
我們希望今后可以重用這個腳本,所以把用到的變量全都放在一起便于修改或使用腳本的參數進行初始化:
$rgName = "vmpool"$rgLocation = "East Asia"$subnetConfigName = $rgName + "subnet"$vnetName = $rgName + "vnet"$vmName = "vmxman"$pipName = $vmName + "pip"$nsgRule22Name = "nsgRule22"$nsgName = $rgName + "nsg"$interfaceName = $vmName + "nic"$storageName = $rgName + "storage"$storageType = "Standard_GRS"$oSDiskName = $vmName + "OSDisk"$vmSize = "Standard_D1"$vmVersion = "16.04-LTS"$userName = "nick"$userPassword = "123456"
希望沒有嚇到你。沒錯!就是需要這么多的變量,這里先不解釋,在后面用到一個說一個。
創建登錄虛機的憑據
通過這個腳本創建的虛機默認會創建一個用戶,你需要指定用戶的名稱和登錄密碼(我們的創建的用戶通過公鑰認證登錄,這個密碼并不真正使用)。通過用戶名和密碼創建憑據對象:
$securePassword = ConvertTo-SecureString $userPassword -AsPlainText -Force$userCred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
創建 Resource Group
創建一個新的 Resource Group,這個虛機及其所有相關的組件都歸屬于同一個 Resource Group:
New-AzureRmResourceGroup -Name $rgName -Location $rgLocation在參數 Location 中指定 Resource Group 的位置為東亞(訪問速度比較快)。
創建虛擬網絡
接下來創建與虛擬網絡。先創建一個子網的配置:
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetConfigName -AddressPrefix 192.168.1.0/24然后創建具有一個子網的虛擬網絡:
$vnet = New-AzureRmVirtualNetwork -ResourceGroupName $rgName -Location $rgLocation ` -Name $vnetName -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig最后為主機創建一個可以外網訪問的 public IP:
$pip = New-AzureRmPublicIpAddress -ResourceGroupName $rgName -Location $rgLocation ` -AllocationMethod Static -IdleTimeoutInMinutes 4 ` -Name $pipName
新聞熱點
疑難解答