一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - PowerShell - 使用 powershell 創(chuàng)建虛擬機

使用 powershell 創(chuàng)建虛擬機

2020-07-09 09:07sparkdev PowerShell

Azure PowerShell 模塊用于從 PowerShell 命令行或腳本創(chuàng)建和管理 Azure 資源。 本指南詳細介紹了如何使用 Azure PowerShell 模塊創(chuàng)建虛擬機。

在進行與 azure 相關(guān)的自動化過程中,創(chuàng)建虛擬主機是避不開的操作。由于系統(tǒng)本身的復雜性,很難用一兩條簡單的命令完成虛擬主機的創(chuàng)建。所以專門寫一篇文章來記錄使用 PowerShell 在 azure 上創(chuàng)建虛擬主機(Ubuntu 服務(wù)器)。
虛擬主機虛擬主機需要與其他的一些基礎(chǔ)性組件關(guān)聯(lián)在一起才能提供可用的服務(wù),這些組件包括:網(wǎng)卡、public IP 地址、虛擬網(wǎng)絡(luò)、網(wǎng)絡(luò)安全組、存儲等。下圖包含了新建一個虛機所需要的其他組件:

使用 powershell 創(chuàng)建虛擬機

也就是說在我們創(chuàng)建虛機的同時也要把這些組件一一的創(chuàng)建出來。

定義變量

我們希望今后可以重用這個腳本,所以把用到的變量全都放在一起便于修改或使用腳本的參數(shù)進行初始化:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$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"
 

希望沒有嚇到你。沒錯!就是需要這么多的變量,這里先不解釋,在后面用到一個說一個。

創(chuàng)建登錄虛機的憑據(jù)

通過這個腳本創(chuàng)建的虛機默認會創(chuàng)建一個用戶,你需要指定用戶的名稱和登錄密碼(我們的創(chuàng)建的用戶通過公鑰認證登錄,這個密碼并不真正使用)。通過用戶名和密碼創(chuàng)建憑據(jù)對象:

?
1
2
$securePassword = ConvertTo-SecureString $userPassword -AsPlainText -Force
$userCred = New-Object System.Management.Automation.PSCredential ($userName, $securePassword)
 

創(chuàng)建 Resource Group

創(chuàng)建一個新的 Resource Group,這個虛機及其所有相關(guān)的組件都歸屬于同一個 Resource Group:

?
1
New-AzureRmResourceGroup -Name $rgName -Location $rgLocation
在參數(shù) Location 中指定 Resource Group 的位置為東亞(訪問速度比較快)。

創(chuàng)建虛擬網(wǎng)絡(luò)

接下來創(chuàng)建與虛擬網(wǎng)絡(luò)。先創(chuàng)建一個子網(wǎng)的配置:

?
1
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetConfigName -AddressPrefix 192.168.1.0/24
然后創(chuàng)建具有一個子網(wǎng)的虛擬網(wǎng)絡(luò):
?
1
2
$vnet = New-AzureRmVirtualNetwork -ResourceGroupName $rgName -Location $rgLocation `
                 -Name $vnetName -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig
最后為主機創(chuàng)建一個可以外網(wǎng)訪問的 public IP:
?
1
2
3
$pip = New-AzureRmPublicIpAddress -ResourceGroupName $rgName -Location $rgLocation `
                 -AllocationMethod Static -IdleTimeoutInMinutes 4 `
                 -Name $pipName
創(chuàng)建網(wǎng)絡(luò)安全組

需要先配置一個允許訪問 22 端口的規(guī)則:

?
1
2
3
$nsgRule22 = New-AzureRmNetworkSecurityRuleConfig -Name $nsgRule22Name -Protocol Tcp `
  -Direction Inbound -Priority 200 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
  -DestinationPortRange 22 -Access Allow
然后創(chuàng)建網(wǎng)絡(luò)安全組:
?
1
2
$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $rgLocation `
  -Name $nsgName -SecurityRules $nsgRule22
創(chuàng)建網(wǎng)絡(luò)接口

主機還缺一張網(wǎng)卡,所以為主機創(chuàng)建一個虛擬網(wǎng)卡:

?
1
2
$nic = New-AzureRmNetworkInterface -Name $interfaceName -ResourceGroupName $rgName -Location $rgLocation `
  -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
創(chuàng)建 Storage Account

虛機的磁盤文件是以 blob 的形式存放在 azure 的存儲中的,所以我們需要創(chuàng)建一個 StorageAccount 來存儲磁盤文件:

?
1
$storageAccount = New-AzureRmStorageAccount -ResourceGroupName $rgName -Name $storageName -Type $storageType -Location $rgLocation
 

下面定義磁盤文件的存放位置和名稱:

?
1
$oSDiskUri = $storageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $oSDiskName + ".vhd"
創(chuàng)建虛機

下面創(chuàng)建虛機相關(guān)的配置:

?
1
2
3
4
5
$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize | `
      Set-AzureRmVMOperatingSystem -Linux -ComputerName $vmName -Credential $userCred -DisablePasswordAuthentication | `
      Set-AzureRmVMSourceImage -PublisherName Canonical -Offer UbuntuServer -Skus $vmVersion -Version latest | `
      Add-AzureRmVMNetworkInterface -Id $nic.Id | `
      Set-AzureRmVMOSDisk -VhdUri $oSDiskUri -CreateOption FromImage
我們創(chuàng)建的虛機操作系統(tǒng)為 Ubuntu Server 16.04-LTS,禁止使用用戶名密碼的方式登錄。要讓用戶能夠通過公鑰的方式登錄必須提供用戶的公鑰:
?
1
$sshPublicKey = "nick's ssh public key"
下面的命令會把你提供的公鑰寫入到用戶的 authorized_keys 文件中:
?
1
Add-AzureRmVMSshPublicKey -VM $vmconfig -KeyData $sshPublicKey -Path "/home/$userName/.ssh/authorized_keys"
下面的命令真正的在 azure 上創(chuàng)建虛機:
?
1
New-AzureRmVM -ResourceGroupName $rgName -Location $rgLocation -VM $vmConfig
訪問權(quán)限問題

在 azure 上執(zhí)行操作需要用戶先進行登錄,那么在 PowerShell 腳本中該如何做呢?
筆者在《Azure 基礎(chǔ):用 PowerShell 自動登錄》一文中有詳細的介紹,有興趣的朋友可以參考。

原文鏈接:http://www.cnblogs.com/sparkdev/p/7725965.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成年男人永久免费看片 | 99久久精品久久久久久清纯 | 黑人同学征服教师麻麻 | 天天躁夜夜躁很很躁 | 国产欧美日韩视频在线观看一区二区 | www.尤物在线 | 爱情岛论坛亚洲自拍 | 免费亚洲一区 | 92国产福利视频一区二区 | 国产91精选在线观看麻豆 | 女人叉开腿让男人桶 | 视频一区二区三区在线观看 | 人人爽人人香蕉 | 白发在线视频播放观看免费 | 国产日产在线观看 | futa百合高肉全h | 久久re这里精品在线视频7 | 欧美肥bb | 色琪琪久久草在线视频 | 王淑兰李思雨李铁柱乡村小说免费 | 91美女在线| 男男gaygays中国| 女学生被老师调教在教室 | 久久精品视在线观看2 | 毛片视频在线免费观看 | 双性人bbww欧美双性 | 天天舔天天操天天干 | 91国内在线国内在线播放 | 高清在线免费 | 五月色婷婷在线影院 | 男人的天堂日本 | chinese男男gayxxx chinese老头和老太交hd | 久久99亚洲热最新地址获取 | 久久久91精品国产一区二区 | 亚洲精品一区波多野结衣 | 亚洲精品中文 | 国产精品自产拍在线观看2019 | 精品久久久久久无码人妻国产馆 | 国产高清精品自在久久 | 视频大全在线观看免费 | 精品久久成人免费第三区 |