欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用Azure powershell 创建Azure虚拟机

程序员文章站 2023-12-30 16:04:46
...

目前使用的是全球版的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口,这种情况下的故障排查下次介绍。









上一篇:

下一篇: