用Mac终端为Azure市场创建虚拟机镜像

如果要在Azure市场中上传虚拟机镜像,那我需要准备好镜像,准备过程如下:

一、在Azure控制台中创建一台虚拟机;
1.打开控制台选择“创建资源”;
2.创建虚拟机,系统选择“windows 2016 Datacenter”;
3.创建完成后记下IP地址、用户名和密码。

二、用mac连接新创建的虚拟机
1.打开mac上的“Parallels”软件,选择新建连接;
2.选择“标准RDP”,输入虚拟机的IP地址;
3.选择左下角的“高级设置”,打开上方“本地资源”选项,点选共享本地磁盘,此处选择“Downloads”作为与虚拟机共享的文件夹;
4.输入用户名和密码点击连接。

三、为虚拟机安装所需软件
1.打开虚拟机文件系统,选择共享的文件夹,此处是“Downloads”;
2.将共享文件夹中的软件安装包,此处是veeam B&R,复制到虚拟机磁盘中;
3.安装好该软件,虚拟机就已经准备好了;

四、准备powershell
我的电脑没装powershell,这次是第一次操作,微软官网有相关文档,以下是为mac装powershell的说明文档:
https://docs.microsoft.com/zh-cn/powershell/azure/install-azurermps-maclinux?view=azurermps-6.13.0
我按照官方文档整理一遍顺序:首先需要安装powershell core,但是在安装powershell core之前还需安装Homebrew,所以顺序如下:
1.打开mac终端;
2.安装Homebrew,打开这个网站https://brew.sh,将网站中的第一条命令粘贴到终端中运行,我已经粘贴到这里:
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
3.上一条命令运行完毕后,现在开始安装powershell;
4.输入命令:brew cask install powershell;
5.输入命令:pwsh,验证安装是否正常运行,这也是我们在终端启动powershell的命令;
6.pwsh命令可以正常运行时,现在开始安装Azure PowerShell;
7.输入命令:Install-Module Az;注意,如果安装过程中遇到权限类错误,需要输入命令:sudo pwsh,来获取最高权限,之后再进行安装;
8.默认情况下,PowerShell 库未配置为 PowerShellGet 的受信任存储库,所以界面会跳出以下内容:
用Mac终端为Azure市场创建虚拟机镜像
此时我们输入“A”即可;
9.因为是第一次使用,所以我们需要启用别名,输入命令:Import-Module Az;之后再输入命令:Enable-AzureRmAlias -Scope CurrentUser;注意,此时可能出现路径错误,我们输入“sudo -s”打开bash,输入以下命令即可:mkdir -p $HOME/.config/powershell;然后我们再输入“pwsh”来启动powershell,再输入上述两条命令;
10.上述步骤完成后,我们需要登录到Azure PowerShell,输入命令:Import-Module Az;然后输入命令:Connect-AzureRmAccount,接着就按照终端中的提示进行连接即可;注意,此时的命令连接到的是Azure Global账户,我开通的账户和虚拟机都在中国区,所以在连接时会不断提示用户名或密码错误而无法连接,所以我应该使用连接中国区的命令:
Connect-AzureRmAccount -Environment AzureChinaCloud;接着再按照终端中的提示操作就可以成功连接我们的Azure账户了,此时如果提示连接不成功,则再输入sudo -s进入bash输入一遍命令:mkdir -p $HOME/.config/powershell,再重新操作一遍步骤10;
11.至此,我就已经成功准备好powershell并连接到了我的Azure账户。

五、制作镜像
1.使用 Sysprep 通用化 Windows VM,详细步骤见以下网址,我在此处也将详细步骤写明:
https://docs.azure.cn/zh-cn/virtual-machines/windows/tutorial-custom-images
(1)连接到虚拟机,我们前面已经连接上了;
(2)在本地资源搜索“sysprep”,查看该.exe文件的路径,我的路径是:C:\Windows\System32\Sysprep,记下来;
(3)搜索“cmd”打开命令提示符,输入命令:
cd C:\Windows\System32\Sysprep,运行;
(4)在新路径中输入:sysprep.exe,运行;
(5)在“系统准备工具”对话框中,选择“进入系统全新体验(OOBE)”,选中“通用化(Generalize)”复选框,在“关机选项”中选择“关机(shut down)”,然后单击“确定”。
(6)Sysprep 在完成运行后会关闭虚拟机。 请勿重启 VM。快的话三分钟左右就会运行完毕,此时桌面提示“RDP已断开连接”,千万不要选择重新连接,直接关闭就好;
(7)此时我们的虚拟机已经通用化。

2.解除分配 VM 并将其标记为通用化
(1)在powershell中输入命令:Stop-AzureRmVM -ResourceGroupName “myResourceGroup” -Name “myVM” -Force,注意将其中的资源组和虚拟机名称改为自己之前创建好的,引号要加;
(2)继续输入命令:Set-AzureRmVM -ResourceGroupName “myResourceGroup” -Name “myVM” -Generalized,此处是将虚拟机的状态设置为 -Generalized,引号记得加,对应名称记得修改;
(3)此时准备工作已经结束,我们下一步就是创建镜像了。

3.创建镜像
(1)获取虚拟机,输入命令:
$vm = Get-AzureRmVM -Name “myVM” -ResourceGroupName “myResourceGroup”,
引号要加,其中名称要做对应的修改;
(2)创建镜像配置,输入命令:
$image = New-AzureRmImageConfig -Location ChinaEast -SourceVirtualMachineId $vm.ID
注意此处的命令,中间有区域的名称,我们要看好我们创建的虚拟机是在哪个区域,我的是在中国北部2这个区域创建的,所以我的命令是:
$image = New-AzureRmImageConfig -Location Chinanorth2 -SourceVirtualMachineId $vm.ID
(3)创建镜像,输入命令:New-AzureRmImage -Image $image -ImageName “myImage” -ResourceGroupName “myResourceGroup”,引号要加,其中名称做对应的修改;
(4)此时终端会跳出以下信息,提示我们创建成功:
用Mac终端为Azure市场创建虚拟机镜像
4.找到镜像:镜像就在Azure控制台中“所有服务”的“镜像”中。之后就可以上传了。