使用Azure powershell 创建Azure虚拟机
目前使用的是全球版的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 '[email protected]' -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口,这种情况下的故障排查下次介绍。
推荐阅读
-
使用Azure powershell 创建Azure虚拟机
-
如何使用 Azure PowerShell 在 Azure Marketplace 中查找 Windows VM 映像
-
批量导出Azure所有虚拟机信息
-
使用 CLI 创建 Azure VM 的自定义映像
-
使用 Azure CLI 创建和管理 Linux VM
-
使用 PowerShell 管理 Azure 磁盘
-
使用VS Code将Azure Functions连接到存储
-
mysql-发布到AZURE的网站访问不到AZURE上创建的MySQL数据库
-
Docker Machine创建Azure虚拟主机
-
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法