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

[经验分享] 从本机构建Linux应用程序VHD映像

[复制链接]

尚未签到

发表于 2017-6-21 16:02:16 | 显示全部楼层 |阅读模式
下图描述了总体的虚拟机映像的VHD生成,上传以及发布到 Azure 镜像市场的全过程:
DSC0000.png

  具体步骤如下:


  • 在本地计算机(Windows平台)上安装Hyper-V,并安装您所需要的虚拟机操作系统
  • 在此操作系统上安装和配置您要发布的应用软件产品
  • 在本地计算机上制作VHD为映像
  • 将制作好的VHD通过PowerShell上传到Azure存储账号上,并获取VHD映像在Azure上的存储位置(url地址)
  • 申请预发布环境,将第四步中Azure上的VHD映像部署到测试发布环境进行验证
  • 正式发布,登录到Azure 镜像市场,并根据发布流程将已经测试完毕的VHD发布到 Azure Azure 镜像市场

第一步:准备


  •   检查操作系统版本兼容性
    如操作系统为Linux,请确认所安装的Linux系统版本是Azure所支持的,具体请参考:Azure支持的Linux版本

  •   本机安装Hyper-V
      确认Hyper-V在您的Windows系统中安装并可以使用。
    关于Hyper-V在各版本Windows上的安装和配置,请参考: 安装Hyper-V并创建虚拟机

  •   本机安装了PowerShell命令行工具
      获取Azure的配置文件(过程中需要输入azure的账号密码),并保存到磁盘。  

    Get-AzurePublishSettingsFile –Environment azurechinacloud  

      导入账户认证信息,路径用引号(为上一步骤中的配置文件路径)。

    Import-AzurePublishSettingsFile <PathToFile>
  第一步完成后,即可开始制作映像,制作VHD主要包括两种方式,第一种是通过本地Hyper-V虚拟机建立VHD,第二种是直接在Azure制作VHD。以下以本地建立VHD为例进行介绍:

第二步:从本机制作Linux应用程序VHD映像
  本节我们以CentOS6.x为例进行介绍,其他Linux操作系统的VHD制作可参考官方文档:制作和上载Linux虚拟机vhd。

  Hyper-V支持的操作系统英文文档:Hyper-V支持的CentOS和RedHat版本)
CentOS6.x 的vhd磁盘制作英文官方文档:基于CentOS的vhd虚拟机制作过程。



  •   安装CentOS 6.5 Linux虚拟机和应用软件
      您需要通过Hyper-V安装Linux虚拟机。注意在安装过程中,一定要选择后续应用软件所需要的各个组件,比如c/c++编译器或cmake或KDE图形界面等,虚拟机安装完成后需要进行系统设置使得Linux可以连接外网。
    Linux虚拟机安装完毕后,继续安装和配置应用软件。

  •   网络和网卡配置
      a)卸载NetworkManager(这个软件包一般Linux没有装)

    # sudo rpm -e --nodeps NetworkManager

      b)编辑文件/etc/sysconfig/network如下:

    NETWORKING=yes
    OSTNAME=localhost.localdomain

      c)编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0:

    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    TYPE=Ethernet
    USERCTL=no
    PEERDNS=yes
    IPV6INIT=no

      d)修改udev防止以太网接口生成固定规则,在Azure平台上克隆虚拟机的时候,这些规则可能导致问题。

    # sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    # sudo rm -f /etc/udev/rules.d/70-persistent-net.rules

      e)确保系统在启动的时候网络服务正常:

    # sudo chkconfig network on
  •   对于CentOS 6.3或早期版本,安装驱动Linux Integration Services (LIS),在CentOS 6.4+ 以上版本跳过此步骤
      下载如下软件包,并通过rpm进行安装:LIS download page

  •   安装软件包python-pyasn1,后面的WALinuxAgent依赖于此

    # sudo yum install python-pyasn1
  •   修改yum相关配置,为安装WaLinuxAgent做准备
      a)编辑yum配置文件/etc/yum.repos.d/CentOS-Base.repo

    [openlogic]
    name=CentOS-$releasever - openlogic packages for $basearch
    baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/
    enabled=1
    gpgcheck=0
    [base]
    name=CentOS-$releasever - Base
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-$releasever - Plus
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    #contrib - packages by Centos Users
    [contrib]
    name=CentOS-$releasever - Contrib
    baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

      b)配置/etc/yum.conf

    http_caching=packages

      另外,CentOS 6.3需要增加如下行:

    exclude=kernel*

      c)编辑/etc/yum/pluginconf.d/fastestmirror.conf, 使得yum模块"fastestmirror"无效
      在[main]一节, 设置

    set enabled=0

      d)清空现有的yum源数据

    # yum clean all

      e)对于CentOS 6.3, 更新内核:

    # sudo yum --disableexcludes=all install kernel

      f)在grub配置中为Azure修改内核启动参数,打开"/boot/grub/menu.lst",增加:

    console=ttyS0 earlyprintk=ttyS0 rootdelay=300 numa=off

      建议去掉以下参数:

    rhgb quiet crashkernel=auto
  •   通过yum安装WaLinuxAgent
      a)安装Azure Linux Agent

    # sudo yum install WALinuxAgent

      b)打开配置文件/etc/waagent.conf如下修改:

    ResourceDisk.Format=y
    ResourceDisk.Filesystem=ext4
    ResourceDisk.MountPoint=/mnt/resource
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048`  ## NOTE:此项根据你的需要设置

      c)运行如下命令,你将不能再启动此虚拟机,直到它部署在Azure上运行。

    # sudo waagent -force -deprovision  
    # export HISTSIZE=0  
    # logout
  •   在Hyper-v中关闭Linux,Linux VHD文件已经制作好并可以上传到Azure。


第三步:将VHD上传至Azure
  用PowerShell将VHD文件上传到Azure
 
假设上传的文件是myvhd.vhd,上传存储空间是mystorage,容器是mycontainer


  •   在Azure管理平台上建立存储位置。
    假设我们的目标是将VHD文件放置到Azure上的存储空间mystorage中的容器mycontainer中,位置为myurl。
    进入Azure管理平台,建立存储空间mystorage并在其下面建立容器mycontainer,然后拷贝这个容器的url位置,注意容器的属性一定要设置为“公共blob”属性,只有“公共blob”属性中的VHD映像才能够被发布到Azure 镜像市场。

  •   将本地的VHD文件上传至Azure的指定位置。打开PowerShell,在PowerShell中输入如下指令。

    Add-AzureVhd [[-NumberOfUploaderThreads] [<Int32>]] -Destination <BlobStorageURL>/<YourImagesFolder>/<VHDName> -LocalFilePath <PathToVHDFile>

      例如:

    Add-AzureVhd -NumberOfUploaderThreads 5 -Destination https://mystorage.blob.core.chinacloudapi.cn/mycontainer/myvhd.vhd -LocalFilePath D:\Mydir\Hyper-V\myvhds\myvhd.vhd
  •   点击“虚拟机”-“映像”-“创建”,然后选择刚才上传的vhd创建映像。至此,您已经成功完成了映像的制作和上传。下一步,便可以发布映像到 Azure 镜像市场。


运维网声明 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-386258-1-1.html 上篇帖子: 【Go命令教程】4. go get 下篇帖子: 再谈容器与虚拟机的那点事
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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