如何实现自动化Linux云安装?(上)

日期: 2008-12-15 作者:David AshleyDavid Boutcher 来源:TechTarget中国 英文

  云计算的特性之一就是能够将应用程序从一个处理器环境移动到另一个。这个特性要求在移动应用程序之前存在一个接收它的目标操作系统。如果能够自动化新操作系统的安装,不是很好吗?

  英特尔架构系统的一个为人熟知的特性就是能够自动安装Linux。不过,对于使用硬件管理控制台的System p或IBM Power Systems,自动安装Linux是一个棘手的问题。本文讨论的解决方案的优点之一是:它是一个纯Linux解决方案,并且不要求您掌握任何具体的AIX技术。

  自动化解决方案概述

  这个解决方案的目标是通过使用一组易于维护和修改的配置自动化操作系统的安装。它具有以下特征:

  刚创建和安装的LPAR使用一个静态IP地址。这仅与LPAR的最终配置相关;您可以在安装过程使用动态主机配置协议(DHCP)。

  Automatic Linux Installation and Configuration with YaST2(AutoYaST)配置XML文件是很通用的,可以在许多服务器类型上使用,包括HTTP、MySQL等。

  AutoYaST文件不包含特定于系统的信息,比如IP地址、主机名等。

  使用这种方式自动化所有内容,这样在HMC上使用一个命令就可以安装新的LPAR。

  配置AutoYaST文件

  SUSE Linux使用一个名为AutoYaST.xml的XML配置文件控制操作系统的安装。默认情况下,每次使用AutoYaST时它都会使用相同的配置安装系统。这使您能够获得特定于不同配置的AutoYaST文件。例如,您可能有一个针对Web服务器的AutoYaST文件,以及另一个针对MySQL服务器的AutoYaST文件。然而,如果服务器仅是IP地址和主机名不同,为它们配置和维护多个AutoYaST文件是相当困难的,并且很费时。

  要创建一个从DHCP服务器获取IP地址和主机名的定制AutoYaST文件,必须从SUSE安装CD复制AutoYaST文件,并按以下的说明修改它:

  1.将标准的AutoYaST文件配置为使用DHCP。将网络区段修改为仅在首次安装操作系统时使用DHCP。进行检查,确保这些网络区段中没有分配主机名。如果某个区段存在主机名,必须完全删除该区段。

  2.如果XML文件包含静态IP信息、DNS信息或其他网络信息,请将这些内容从文件中删除。

  3.将清单1中的代码复制到AutoYaST文件的最后一个XML标记之前的位置。这个新的部分包含一个脚本,它将当前的引导DHCP配置转换成静态网络配置(在下一次引导LPAR时使用该配置)。

  有了这个脚本之后,就不需要单独为每个LPAR准备硬编码IP地址的AutoYaST文件。因此,您只需维护DHCP服务器。

<scripts>
  <init-scripts config_type=”list”>
    <listentry>
      <filename>network_setup</filename>
      <interpreter>shell</interpreter>
      <source><![CDATA[#!/bin/bash
### Disable ipv6
echo ‘install ipv6 /bin/true’ >> /etc/modprobe.conf.local

### Variables to Calculate Network Configuration Settings for a static configuration ###
ACTIVE_INTERFACE=`/sbin/ifconfig | grep eth | awk ‘{print $1}’`
IP_ADDRESS=`/sbin/ifconfig $ACTIVE_INTERFACE | grep ‘inet addr’ | awk ‘{print $2}’
 | sed ‘s/addr://’`
NETMASK=`/sbin/ifconfig $ACTIVE_INTERFACE | grep ‘inet addr’ | awk ‘{print $4}’
 | sed ‘s/Mask://’`
BROADCAST=`/sbin/ifconfig $ACTIVE_INTERFACE | grep Bcast: | awk ‘{ print $3 }’
 | sed ‘s/Bcast://’`
NETWORK=`/sbin/ip route list | grep $IP_ADDRESS | awk ‘{ print $1 }’
 | sed ‘s//[1-9][1-9]//’`
GATEWAY=`/sbin/route | grep default | awk ‘{print $2}’`
HOSTNAME=`/usr/bin/host $IP_ADDRESS | awk ‘{print $5}’ | sed ‘$s/.$//’`

### Setup HOSTNAME
echo “$HOSTNAME” > /etc/HOSTNAME

### Setup Gateway Address
echo “default $GATEWAY – -” > /etc/sysconfig/network/routes

### Setup /etc/hosts with correct host information
HOST=`/usr/bin/host $IP_ADDRESS | awk ‘{print $5}’ | sed ‘$s/.$//’ | cut -d “.” -f 1`
echo “$IP_ADDRESS   $HOSTNAME $HOST” >> /etc/hosts

### Network configuration file rewrite for static configuration

INT_CONF_FILE=/etc/sysconfig/network/ifcfg-eth-id-`ifconfig eth0 | grep HWaddr
 | awk ‘{ print $5 }’ | perl -ne ‘$var=$_; print lc($var)’`

echo ‘DEVICE=eth0’ > $INT_CONF_FILE
echo ‘BOOTPROTO=static’ >> $INT_CONF_FILE
echo “IPADDR=$IP_ADDRESS” >> $INT_CONF_FILE
echo “NETMASK=$NETMASK” >> $INT_CONF_FILE
echo “BROADCAST=$BROADCAST” >> $INT_CONF_FILE
echo “NETWORK=$NETWORK” >> $INT_CONF_FILE
echo ‘STARTMODE=onboot’ >> $INT_CONF_FILE
echo ‘TYPE=Ethernet’ >> $INT_CONF_FILE

### Restart Network
/etc/init.d/network restart
      ]]></source>
    </listentry>
  </init-scripts>
</scripts>

  在本文的下半部分中,我们将学习如何使用HMC lpar_netboot命令、-g参数自动化lpar_netboot以及重用自动化解决方案。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐