设为首页 收藏本站
查看: 1451|回复: 0

[经验分享] ARM模式下使用自定义镜像部署VM

[复制链接]

尚未签到

发表于 2017-7-1 08:33:41 | 显示全部楼层 |阅读模式
  目前在中国区的Azure新portal上面, 暂时不支持直接将用户的虚拟机创建为虚拟机镜像,那么在ARM模式下如何捕获虚拟机为用户自定义镜像?而且由于managed disk没有上线,用户创建的虚拟机只能和镜像在一个存储账号下,如何快速的将用户自定义镜像拷贝到其他存储账号,并且快速创建VM?本文就这些常见问题给出一个简单易用的快速解决办法
  本文介绍的主要主题如下:

  • Linux/Mac下如何使用Azure CLI捕获ARM下虚拟机镜像
  • 使用ARM模板使用自定义镜像快速创建虚拟机
  • 通过Azure CLI在不同账号使用自定义镜像创建虚拟机
使用Azure CLI捕获Linux镜像

1.首先ARM模式下创建一台Linux虚拟机:
DSC0000.png


2.目前中国区Azure并不支持Azure CLI2.0,所以请注意安装 CLI 1.x。Linux命令行下安装Azure Command Line:  sudo npm install -g azure-cli
DSC0001.png


3.安装完成后,检查当前Azure CLI的版本:  Azure --version
DSC0002.png


4.登录Azure China账户,我们使用非交互式登录,-u跟你的用户名,可直接写-p后加密码,-e需要指定是中国Cloud:  azure login -u USERNAME -p PASSWORD -e AzureChinaCloud
DSC0003.png


5.对于已经创建的Linux VM,为了捕获镜像,我们首先需要通用化,也就是把一些该虚拟机特有的个人数据,UUID等清除,便于大规模部署,相当于Windows服务器中的sys-prep操作,使用SSH登录到该Linux虚拟机,执行:  sudo waagent -deprovision+user
DSC0004.png


6. 回到Azure Command Line界面下,我们切换到ARM模式,然后停止这个模板VM,并取消分配:  azure config mode arm
  azure vm deallocate -g myubuntueast -n myvmubuntu
DSC0005.png

  7. 使用Azure Command Line通用化VM:
  azure vm generalize -g myubuntueast -n myvmubuntu
DSC0006.png


8.然后使用azure命令capture来捕获VM为自定义镜像了:  azure vm capture -g myubuntueast -n myvmubuntu -p myvmubuntu -t myTemplate.json
DSC0007.png

  模板文件中存放着OS VHD文件地址,保存以便后续操作使用。

9.创建完成后,使用Storage Explorer查看,就可以看到在System目录下,创建了两个文件,一个VHD,一个json文件:
DSC0008.png

使用ARM模板从自定义镜像创建VM
  1. 自定义镜像创建完成后,在ARM模式下,最简单的方式,就是使用ARM模板来创建虚拟机,那么我们可以使用QuickStart里面的模板101-vm-from-user-image 来创建虚拟机,首先使用Git克隆这个repo:
DSC0009.png

  2.将101-vm-from-user-image目录拷贝到根目录,可以看到里面有6个文件,其中azuredeploy.json是主要文件,parameter是参数文件, newvnet是一个嵌套的模板,创建新的vnet,而existingvnet是处理已有的vnet:
DSC00010.png


3.我们需要修改的是azuredeploy.parameters.json文件,该文件包含了新创建VM的模板镜像地址,用户名,密码,虚拟机网络等信息,镜像的存储URL可以从捕获VM产生的myTemplate.json文件中获得,例如打开该模板文件,我的osDisk地址是:  "uri": https://myvmlinux.blob.core.chinacloudapi.cn/system/Microsoft.Compute/Images/vhds/myvmubuntu-osDisk.c8102a9a-f110-452d-b30a-e4735c2841f4.vhd
  4.修改parameter文件,其中比较重要的部分是镜像地址如下,另外我们在本例中使用已有的虚拟网络,已有的虚拟网络子网:
  "osDiskVhdUri": { "value": https://myvmlinux.blob.core.chinacloudapi.cn/system/Microsoft.Compute/Images/vhds/myvmubuntu-osDisk.c8102a9a-f110-452d-b30a-e4735c2841f4.vhd}
  "newOrExistingVnet": {
  "value": "existing"},
  "n"newOrExistingVnetName": {
  "value": "myubuntueast-vnet"},
  "n"newOrExistingSubnetName": {
  "value": "default"},

5.使用Azure CLI来进行模板部署,使用客户自定义的镜像:  azure group deployment create --name="mylinuxcustodeployment" --resource-group="myubuntueast" --template-file="azuredeploy.json" --parameters-file="azuredeploy.parameters.json"
DSC00011.png

  部署成功后,可以看到输入相关的信息如下:
DSC00012.png


6. 登录Azure新portal,查看新创建的虚拟机状态及组件:
DSC00013.png

  7. 最后使用SSH连接到这个Linux VM做个简单测试,可以看到,可以成功连接到该虚拟机:
DSC00014.png

  注:这个末班中没有定义NSG,如果正式环境里面,请添加相关NSG配置进行虚拟机创建。
使用Azure CLI通过自定义镜像创建VM
  我们创建了虚拟机镜像作为标准模板后,需要分发到不同的存储账号进行虚拟机的创建,那么如何快速的拷贝镜像呢?当然可以使用azcopy等工具 ,但如果只是测试或者镜像数量比较少,建议使用Storage Explorer,该工具是图形化界面,拷贝加速,并且适用于Linux,windows和Mac平台,下载地址:
  http://storageexplorer.com/

1. 找到你的镜像目录,该目录在你捕获镜像的时候,创建了一个system容器,并且适用Microsoft.Compute命名:
DSC00015.png

  在当前目录下选择则该目录,单击菜单上的copy,选择目的存储目录,单击paste,就可以看到整个目录开始拷贝,及时你有多个VHD文件,也会同时拷贝过去:
DSC00016.png

DSC00017.png


2. 拷贝完自定义镜像以后,找到该镜像新位置的URL,然后就可以用Azure CLI来快速创建VM了,在本例中,我们使用已创建的资源组,已经存在的虚拟网络和子网,进行虚拟机创建,那么在开始创建之前,需要先创建一个公网IP和NIC:  azure network public-ip create myubuntueast myPublicCust2IP -l "chinaeast"
DSC00018.png

  创建网络安全组并且创建22端口的SSH规则:
  #Create NSG group     
  azure network nsg create --resource-group myubuntueast --location chinaeast \
   --name myNetworkSecurityGroup
DSC00019.png

  azure network nsg rule create --resource-group myubuntueast \
   --nsg-name myNetworkSecurityGroup --name myNetworkSecurityGroupRuleSSH \
   --protocol tcp --direction inbound --priority 1000 --source-address-prefix '*' \
   --source-port-range '*' --destination-address-prefix '*' --destination-port-range 22 \
   --access allow
DSC00020.png

  azure network nic create myubuntueast myCust3NIC -k default \
       -m myubuntueast-vnet \
       --network-security-group-name myNetworkSecurityGroup \
       -p myPublicCust2IP -l "chinaeast"
DSC00021.png


3. 使用Azure CLI,定制化镜像,和之前创建的NIC和Pub IP来创建虚拟机:  azure vm create -g myubuntueast -n myCustVM3 -l "chinaeast" -y Linux -z Standard_D3 \
  -u azureuser -p Azure123! -f myCust3NIC \
  -d https://myvmstorage.blob.core.chinacloudapi.cn/vhds/myCustVM3.vhd \
  -Q "https://myvmstorage.blob.core.chinacloudapi.cn/system/Microsoft.Compute/Images/vhds/myvmubuntu-osDisk.c8102a9a-f110-452d-b30a-e4735c2841f4.vhd"
DSC00022.png

  创建完成后,检查Azure的管理界面,可以看到虚拟机已经正常运行:
DSC00023.png


4. 使用SSH登录到虚拟机进行测试,可以看到一切正常,我们在之前NSG的设置中,已经打开了SSH端口:
DSC00024.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389895-1-1.html 上篇帖子: 云计算资源分享与下载 下篇帖子: 【翻译】在Mac上使用VSCode创建你的第一个Asp.Net Core应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表