使用Azure powershell 创建Azure虚拟机

时间:2022-08-30 21:45:29

目前使用的是全球版的Azure,与世纪互联的有一点区别,总的操作是一样的。部分新功能不会在世纪互联及时更新。

Azure中有两种模式,一种是经典模式(ASM),还有一种是资源模式(ARM),从2016年开始新增的功能都是在ARM模式下perview,目测微软打算从ASM逐渐转到到ARM。

现在介绍一下做这个实验需要准备的东西:

1.需要一个Azure订阅(免费的也可以)

2.Azure Powershell (目前我使用的是v3.7.0,我们可以从github上下载最新的版本,每个新版本会新增一些命令,有些命令旧版本不支持,所以要关注版本 )

可以通过如下命令检查Azure PowerShell版本:

PS C:\Users\Lenovo> Get-Module -ListAvailable -Name Azure -Refresh

Dir: C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement


ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 3.7.0 Azure {Get-AzureAutomationCertificate, Get-AzureAutomationConnec...


开始PowerShell创建Azure VM:

1.登录PowerShell:

Login-AzureRmAccount     输入Azure的账号和密码

2.创建一个resource group,在ARM模式下,这个是任何资源必须的,类似于一个集合,在这个集合里创建一个virtual network, 这样一个resource group就是一个网络环境,像内网一样,里面的设备是互通的,而且Azure提供了内置的DNS,可以直接用主机名通信。先设置一下需要的变量:

$resourceGroup = "mygroup"   #这个名字账号下唯一
$location = "eastus"   #我们可以使用 Get-AzureRmLocation | select displayname 这个命令列出该账号所支持的区域
$vmName = "myVM"   #单个resource group里面唯一,这个名字可以在一个订阅的其他组里面使用,不冲突

开始创建resource group:

New-AzureRmResourceGroup -Name $resourceGroup -Location $location

创建虚拟机的登录密码:

$securePassword = ConvertTo-SecureString '122130869@qq' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("jason", $securePassword)

创建一个subnet的配置文件:

$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name mySubnet -AddressPrefix 10.0.0.0/24

创建一个virtual network:

$vnet = New-AzureRmVirtualNetwork -ResourceGroupName $resourceGroup -Location $location  -Name MYvNET -AddressPrefix 10.0.0.0/16 -Subnet $subnetConfig

创建一个公网IP并给这个IP 添加FQDN:

$pip = New-AzureRmPublicIpAddress -ResourceGroupName $resourceGroup -Location $location  -Name "mypublicdns$(Get-Random)" -AllocationMethod Static -IdleTimeoutInMinutes 4

创建一个inbound rules,把端口22 加进去,这样虚拟机可以被远程

$nsgRuleSSH = New-AzureRmNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleSSH  -Protocol Tcp `
  -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
  -DestinationPortRange 22 -Access Allow

创建一个NSG,类似于防火墙,虚拟机外面的,可以对Virtual network 生效,也可以对subnet生效:

$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
  -Name myNetworkSecurityGroup -SecurityRules $nsgRuleSSH

创建一个网卡,并将这个网卡关联到虚拟机和NSG上:

$nic = New-AzureRmNetworkInterface -Name myNic -ResourceGroupName $resourceGroup -Location $location `
  -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

创建一个虚拟机的配置文件:

$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize Standard_D1 | `
Set-AzureRmVMOperatingSystem -Linux -ComputerName $vmName -Credential $cred | `
Set-AzureRmVMSourceImage -PublisherName Canonical -Offer UbuntuServer -Skus 14.04.2-LTS -Version latest | `
Add-AzureRmVMNetworkInterface -Id $nic.Id

开始创建虚拟机:

New-AzureRmVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig


Note:

创建一个虚拟机我们需要关注如下的信息:

1.需要一个网络(virtual network),开始时需要规划好,因为Azure目前还不支持修改Vnet的地址段。

2.新建一个NSG(network security group),这是个可选项,一个环境里面可以有多个NSG,为了网络安全还是建一个。新建好了以后,需要注意的是新开通某些服务,需要将对应的端口打开。NSG 还可以被应用到subnet上,所以有些时候要注意检查subnet的NSG设置。NSG里面分inbound rules 和outbound rules, 默认出是全部方通的, 进的默认只开通22或者RDP的3389.

3.DNS(或者说是添加到公网IP的FQDN),这个是可选项,有时候公网IP 未设置成静态的,这个DNS 不会变,方便记忆。

4.选择虚拟机镜像以及版本,可以在官网查看,也可以用powershell命令查看。

5.在Azure里面创建的Linux虚拟机,我们是不可以创建root账户的,用自己的账户登录进去,再sudo -i切换到root用户,密码是你设置的开机密码。

6.虚拟机的开关机操作,这个是需要注意的,因为这个涉及到费用,如果你想保留虚机,并且减少开支,不能只是从虚拟机里面关机,需要从Azure portal上去关机,或者用powershell命令操作,从portal上操作关机,计费系统才会知道你关机了,不然是正常收费的。

7.Azure虚拟机创建好了,会自动给虚拟机创建一个临时盘(SSD),这个盘是为了加快虚拟机的运算速度的,不能用于数据存储,当关机或者Azure做维护将你的虚拟机迁移到其他物理机,存在这上面的数据会丢失,而且找不回。如果想扩大空间,可以用过增加磁盘的方式,不同的等级可以添加的磁盘数量不一样,磁盘大小最大是1G。所以数据量大的选择虚拟机size的时候需要注意,当然size也是可以resize的,不过也有一些限制,只能在同一个级别扩展,比如你是DS系列的虚拟机,只能从DS_1往上扩展,不能扩展到F系列。

8.Linux虚拟机可以在里面配置LVM,

9.Azure虚拟机最重要的是waagent,这个是虚拟机与Azure平台通信的agent,后续会介绍一些agent的troubleshooting相关操作。

10.在Azure上单个的虚拟机是没有SLA保证的,最少要两台在同一个Availability set里面(后面介绍)。

11.Azure虚拟机可以不带公网IP,需要在Azure上创建一个jumpbox

12.Azure虚拟机收费,虚拟机费用+存储用量+网络流量+公网IP。

13.Azure虚拟机有时候会出现一些问题,但是没有console口,这种情况下的故障排查下次介绍。