如何在CentOS 5.x 中安装Windows Azure Linux Agent (WALA)

在今天的这一个章节中,我们主要讨论在CentOs 5.x 中如何安装Windows Azure Linux Agent 2.11 (简称WALA)。如果你是需要对CentOS 6.x 发行版本进行Windows Azure 基本镜像进行配置,请参考Azure 中文官网 "创建并上传包含 Linux 操作系统的虚拟硬盘"

对应6.x 的相关步骤,在CentOS 5.x中进行Windows Azure Linux Agent 主要步骤和区别如下,

  1. 需要手工安装Python 2.6 以上版本
  2. 需要手工安装python-pyasn1
  3. 需要修改resource disk 类型为ext3
  4. 需要手工安装WALA (waagent -install)

准备 CentOS 5.x 客户虚拟机,您必须在本地有HyperV 功能的操作系统中完成特定的配置步骤才能使虚拟机在 Azure 中运行,如Windows 8.0 or Windows 2008 R2 或以上版本的Windows 操作系统

  1. 在 Hyper-V 管理器中,选择已经通过ISO镜像安装完成的虚拟机

  2. 单击 “连接” 以打开虚拟机窗口。使用root账号登录系统

  3. 通过运行以下命令卸载 NetworkManager

      # yum remove NetworkManager
    

    注意:如果未安装此包,则该命令将失败,并显示一条错误消息。这是正常情况。

  4. /etc/sysconfig/ 目录中创建一个名为 network 的文件,该文件包含以下文本:

      NETWORKING=yes
     NETWORKING_IPV6=no
     HOSTNAME=localhost.localdomain
    
  5. /etc/sysconfig/network-scripts/ 目录中创建一个名为 ifcfg-eth0 的文件,该文件包含以下文本: 

      DEVICE=eth0
     ONBOOT=yes
     BOOTPROTO=dhcp
     TYPE=Ethernet
     USERCTL=no
     PEERDNS=yes
     IPV6INIT=no
    
  6. 移动(或删除)udev 规则,以避免产生以太网接口的静态规则。在 Windows Azure 或 Hyper-V 中克隆虚拟机时,这些规则会引发问题

      # mkdir -m 0700 /var/lib/waagent
     # mv /lib/udev/rules.d/75-persistent-net-generator.rules /var/lib/waagent/
     # mv /etc/udev/rules.d/70-persistent-net.rules /var/lib/waagent/
    
  7. 通过运行以下命令,确保网络服务将在引导时启动:

      # chkconfig network on
    
  8. 安装适用于 Linux Integration Services 的驱动程序 , 注意此处5.5 、5.6 、5.7、5.8 需要安装相应版本的LIS, 5.9、5.10可以省略,发行版本中已经包含了相应的LIS 驱动程序

  9. 将下列行添加到 /etc/yum.conf

      http_caching=packages
    
  10. 通过编辑文件“/etc/yum/pluginconf.d/fastestmirror.conf”禁用 yum 模块“fastestmirror”,并在 [main] 下面键入以下内容

      set enabled=0
    
  11. 运行以下命令以便清除当前 yum 本地库

      # yum clean all
    
  12. 对于 CentOS 5.x,通过运行以下命令更新正在运行的虚拟机的内核

      # yum --disableexcludes=all install kernel
    
  13. 在 grub 配置中修改内核引导行,以使其包含 Azure 的其他内核参数。若要执行此操作,请在文本编辑器中打开 /boot/grub/menu.lst,并确保默认内核包含以下参数:

     console=ttyS0 earlyprintk=ttyS0 rootdelay=300 numa=off 
    
  14. 安装编译器环境

      # yum install gcc zlib-devel python-setuptools readline-devel 
    
  15. 下载,解压,编译,安装Python 2.6 以上版本。在本例中使用了2.7.8。

      # cd /
     # mkdir /tmp
     # wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
     # tar -xzvf Python-2.7.8.tgz
     # cd Python-2.7.8
     # ./configure
     # make altinstall
    
  16. 建立sbin 硬连接

      # ln -s /usr/local/bin/python2.7 /usr/sbin/python
    
  17. 下载,解压,安装python-pyasn1

      # cd /tmp
     # wget https://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/python-pyasn1-0.0.12a-1.el5.rf.noarch.rpm
     # rpm -ivh python-pyasn1-0.0.12a-1.el5.rf.noarch.rpm
     # rpm -qa|grep "python"
    
  18. 复制python-pyasn1的安装包到2.7.8的site-package内

      # cp -avr /usr/lib/python2.4/site-packages/pyasn1 /usr/local/lib/python2.7/site-packages/pyasn1 
    
  19. 下载,安装Windows Azure Linux Agent

      # cd /tmp
     # wget https://raw.githubusercontent.com/Azure/WALinuxAgent/WALinuxAgent-2.0.11/waagent --no-check-certificate
     # chmod +x waagent
     # cp waagent /usr/sbin
     # cd /usr/sbin
     # waagent -install 
    
  20. 清除/tmp下的文件

      # cd /
     # rm -Rf /tmp
     # mkdir /tmp 
    
  21. 不要在 OS 磁盘上创建交换空间。Azure Linux 代理可使用在 Azure 上设置后附加到虚拟机的本地资源磁盘自动配置交换空间。在安装 Azure Linux 代理(请参见步骤19)后,相应地在 /etc/waagent.conf 中修改以下参数:

      ResourceDisk.Format=y
     ResourceDisk.Filesystem=ext3
     ResourceDisk.MountPoint=/mnt/resource
     ResourceDisk.EnableSwap=y
     ResourceDisk.SwapSizeMB=4096 ## NOTE: set this to whatever you need it to be. 
    
  22. 重新启动Linux VM, 用root账号登录系统,执行deprovision

      # waagent -force -deprovision
     # export HISTSIZE=0
     # logout
    
  23. 关闭虚拟机,上传VHD 到Windows Azure 块存储中, 可以使用Add-AzureVHD 

      PS C:\> Add-AzureVhd -Destination https://mytestaccount.blob.core.windows.net/vhdstore/centos53image.vhd
     -LocalFilePath C:\vhd\centos53image.vhd -NumberOfThreads 32
    

最后可以参考 Create and upload a Linux VHD in Azure 完成虚拟机的建立。