信息化 频道

基于IBM TPM实现AIX自动化部署的实践

  【IT168技术】近些年来,伴随着IT技术的不断发展,IT的各个领域都在发生着日益不同的变化。这些变化无疑给当前的IT基础架构和计算资源管理带来了新的机遇和挑战。IT基础设施正在从物理环境转向虚拟化,计算资源的管理正在从手动变为自动。本篇文章以在IBM Power System逻辑分区LPAR(Logic Partition)中安装AIX为例,总结利用IBM TPM(IBM Tivoli Provisioning Manager)在LPAR上自动部署AIX系统方面的非常好的实践,主要包括了如下几个方面内容。

  用户对AIX系统自动化部署的需求

  IBM TPM自动部署平台介绍与经验分享

  利用IBM TPM实现AIX系统自动部署经验总结

  1. 用户对AIX系统自动化部署的需求

  通常传统的安装AIX步骤,管理员需要放入AIX安装介质,开机引导,选择启动方式。在引导进入安装交互界面之后,管理员则要针对不同的需求进入不同的菜单选择各种繁琐的参数。而在安装完成BOS之后,如果用户需要安装中间件,我们的管理员又要准备中间件的安装介质,然后上传并完成安装。这种安装方式不仅把大部分时间花费在人机交互部分,且很容易引入人为操作错误,导致最后交付的系统无法使用,进而大量消耗系统操作成本。

  在安装请求量不大的情况下,依赖传统安装方式人工操作是可以满足需求的。但是如果请求量不断增加,我们的管理员就要面临工作量的考验。尤其随着虚拟化的不断普及,数据中心数量逐渐增加,管理员需要处理的不仅是系统安装需求数量上的激增,系统的应用和服务也更加多样化。在这种情势下,传统安装方式就难以完成新的需求。如果仅仅凭借增加管理员数量,势必带来人力成本的增加,而利用自动化工具部署则是应对越来越多系统安装需求的行之有效办法。通过以往批量安装系统经验来看,在同等的硬件及系统环境下,利用自动化解决方案不仅会避免引入人为操作失误,提高交付成功率,而且可以极大的解放出管理员维护时间,从而减少整体维护的投入以降低维护成本。

  2. IBM TPM自动部署平台介绍与经验分享

  2.1. TPM 自动部署原理简介

  Tivoli Provisioning Manager是一个用于实施数据中心自动化计划的整合工具。它可以帮助自动配置Linux和 UNIX? 物理和虚拟服务器上的软件和设置。

  我们参考图1来简单介绍一下,TPM和NIM是如何管理Power上的LPAR。

基于IBM TPM实现AIX自动化部署
▲图1 TPM工作原理步骤

  1) TPM通过SSH协议从HMC中能够发现硬件资源信息和已经存在的LPAR信息。

  2) HMC发现之后,从TPM中就可以对LPAR开关机操作和资源分配。

  3) TPM通过SSH协议对NIM中的镜像和资源进行发现。

  4) 使用发现到的镜像去定义准备部署的模板。

  5) 在TPM中选择对应的系统镜像模板对目标LPAR进行初始化安装。NIM工作流将在LPAR的HMC控制台上提交一个网络启动命令,LPAR将会通过网络直接初始化安装系统。

  6) 在安装完系统之后,NIM工作流将通过SSH或Telnet运行系统命令去核查系统部署情况,此步骤需要在TPM中事先定义LPAR的认证访问点以便于远程登录时用于账号认证使用。

  注:用来HMC发现的HMC账号需具有管理员权限。

${PageNumber}

  2.2. NIM 工作原理简介

  NIM(Network Installation Management)是AIX上用于集中安装、升级和维护系统的工具。

  参照下图,简单描述NIM安装系统的具体过程:

基于IBM TPM实现AIX自动化部署
▲图2 NIM工作原理步骤

  1) NIM 服务端准备工作:正确配置bootp、tftp、NFS服务,确保NFS服务提供如下资源完整及客户机的资源对象定义正确。

  SPOT目录——用来存放设备驱动BOS安装程等网络启动安装时必须的执行程序

  lpp_source目录——存放AIX CDs中的各种安装包和文件集

  bosinst_data文件(可选项)——安装AIX交互时的自动应答文件

  install_script文件(可选项)——系统第一次启动时运行的自定义安装脚本

  mksysb目录(恢复安装系统使用)——存放用于恢复安装的镜像文件

  2) NIM 客户端系统在SMS中指定网络从NIM服务器启动,将向NIM服务器端发送bootp系统引导请求,要求获得本机IP地址和网络引导内核信息。

  3) NIM 服务器端接收NIM 客户机的bootp 请求,并根据已定义的网络引导内核目录返回相关信息,NIM 客户机将按照获得的信息请求tftp下载引导内核等文件,NIM 服务端接受并响应请求。

  4) NIM 客户机获得引导内核并加载。

  5) NIM 客户机请求 NIM 服务器挂载 NFS 服务并启动系统安装程序。

  6) NIM 服务器响应请求,并向NIM客户机发送对应请求的安装文件。

  7) NIM 客户机恢复BOS并安装设备驱动,按照bosinst_data文件安装和配置文件集。

  8) NIM 客户机在系统安装并配置系统基本参数后,将重启系统并执行install_script完成定义安装,最后发送请求更新NIM服务器中的客户机状态。

  2.3. AIX自动部署实例

  1) 环境简介

  软件环境采用TPM7.2.1、HMCV7R7.2.0.1、NIM6.1.1.0,统一采用AIX 6.1-L05作为服务器的系统环境。

  2) 环境准备

  首先,在HMC中我们已经按照的各项资源分配需求划分好LPAR,然后安装TPM及NIM服务器。鉴于IBM已经有很多文章介绍TPM 及 NIM 服务器的安装及配置,本文不再详细描述,请参考相关文章。

  接下来如图所示,配置服务器间的SSH协议无交互连接,可在TPM服务器上参考如下命令进行配置:

基于IBM TPM实现AIX自动化部署
▲图3 配置服务器间SSH连接

  分别添加TPM服务器的用户tioadmin公钥到HMC管理帐户和NIM超级用户SSH认证文件中。

  参考命令

  scp <hmc user name>@<hmc server name>:~/.ssh/authorized_keys2 <local file>
  cat <tioadmin public key> >> <local file>
  scp <local file> <hmc user name>@<hmc server name>:~/.ssh/authorized_keys2

${PageNumber}

  NIM服务器准备工作:

  实例中采用从mksysb文件恢复安装系统的方式部署AIX系统,利用这种方式不仅可以提高安装效率,而且可以定义多种环境下(比如DB2,WebSphere等中间件)的镜像备份,提供定制化系统安装。

  需要定义的相关资源

  DNS--resolv_conf

  配置应答--bosinst_data

  启动安装资源--fb_script

  备份恢复资源--mksysb,spot

  NFS服务共享相关文件及目录

  /export/spot/6105Mulspot/usr -ro,anon=0

  /export/mksysb/6105_Mul.mksysb -ro,anon=0

  /export/nim/scripts -ro,anon=0

  /export/bosinst_data/bid_ow -ro,anon=0

  定义启动安装脚本:如下所示,实例中使用脚本定义安装SSH、SSL工具,可以在此处自定义所需求工具包的安装配置任务。

  #! /usr/bin/ksh

  # - NIM服务器中定义此脚本,在系统第一次启动时运行

  #-----------------------------------------------------------------------

  # 此脚本测试部署系统与TPM服务器连通性,并在网络正常情况下,远程挂载TPM服务器共享目录

  # 然后安装需要的工具(SSL、SSH),初始化root密码,并导入TPM服务器tioadmin账户公钥

  # 到root认证文件中

  #-----------------------------------------------------------------------

  TIO_PUB_KEY="id_rsa.pub"

  # create a script in the /tmp directory name fb_script permissions 700

  echo '#!/usr/bin/ksh' > /tmp/fb_script

  echo "NET_UP=0" >> /tmp/fb_script

  echo "while [ \$NET_UP -eq 0 ] ; do" >> /tmp/fb_script

  echo " ping -c 1 192.168.1.19" >> /tmp/fb_script

  echo " if [ \$? -eq 0 ] ; then" >> /tmp/fb_script

  echo " NET_UP=1" >> /tmp/fb_script

  echo " fi" >> /tmp/fb_script

  echo "done" >> /tmp/fb_script

  echo "mkdir /tmp/mount_point" >> /tmp/fb_script

  echo "mkdir ~/.ssh" >> /tmp/fb_script

  echo "chmod 0750 ~/.ssh" >> /tmp/fb_script

  echo "mount 192.168.1.19:/share /tmp/mount_point" >> /tmp/fb_script

  echo "cd /tmp/mount_point" >> /tmp/fb_script

  echo "cat mypwdfile | chpasswd" >> /tmp/fb_script

  echo "installp -d openssl.base all" >> /tmp/fb_script

  echo "installp -d openssl.license all" >> /tmp/fb_script

  echo "installp -d openssh.base all" >> /tmp/fb_script

  echo "cd" >> /tmp/fb_script

  echo "cp /tmp/mount_point/$TIO_PUB_KEY ~/.ssh/authorized_keys" >> /tmp/fb_script

  echo "umount /tmp/mount_point" >> /tmp/fb_script

  echo "rmdir /tmp/mount_point" >> /tmp/fb_script

  echo "rm /tmp/fb_script" >> /tmp/fb_script

  echo "touch me" >> /tmp/fb_script

  chmod 700 /tmp/fb_script

  # set our at job

  echo "/tmp/fb_script" | at now

  配置自动应答文件

  bosinst_data中可以根据具体需要定义是否添加CDE,KDE等其他系统配置。

  注:如果本地不使用DNS服务器,一定要将LPAR及HMC、NIM、TPM的IP地址和主机名对应记录写入到NIM服务器上的/etc/hosts文件中。

${PageNumber}

  TPM服务器上准备工作:

  TPM除了使用发现的方式去录入相关管理对象信息之外,还提供使用XML模板的形式将对象导入到TPM DCM数据库中。实例中在TPM服务器上使用模板导入方式初始化HMC,CEC,NIM,镜像及LPAR 的相关信息。

  如下代码所示:

  HMC.xml
  <!DOCTYPE datacenter PUBLIC "-//Think Dynamics//DTD XML Import//EN"
  "/opt/IBM/tivoli/thinkcontrol/xml/xmlimport.dtd">
  <datacenter>
  <!-- HMC Definition -->
  <spare-pool name="hmc67" locale="en_US">
  <server name="hmc67" locale="en_US">
  <nic name="nic0" managed="true">
  <network-interface name="en0" ipaddress="192.168.1.67"
   netmask="255.255.255.0" management="true">
  <route gateway="192.168.1.1" />
  </network-interface>
  </nic>
  <sap name="ssh-client" port="22" host="true" protocol-type="ipv4"
   app-protocol="SSH" is-device-model="SSH Service Access Point" locale="en_US">
  <default-sap operation-type="execute-command" />
  <default-sap operation-type="ping" />
  <default-sap operation-type="file-transfer" />
  <credentials search-key="master" is-default="true">
  <rsa-credentials username="hscroot" />
  </credentials>
  </sap>
  <access-domain-membership>
  <access-domain-name>sample:all-objects</access-domain-name>
  </access-domain-membership>
  </server>
  </spare-pool>
  </datacenter>

  NIM.xml
  <!-- Definitions for AIM NIM servers -->
  <!DOCTYPE datacenter PUBLIC "-//Think Dynamics//DTD XML Import//EN"
  "/opt/IBM/tivoli/thinkcontrol/xml/xmlimport.dtd">
  <datacenter>
  <!-- AIX NIM Instance -->
  <server name="nim.test.com" locale="en_US">
   <nic name="nic0" managed="true">
   <network-interface name="en0" ipaddress="192.168.1.25"
   netmask="255.255.255.0" management="true">
   <route gateway="192.168.1.1" />
   </network-interface>
   </nic>
   <sap name="ssh-client" port="22" host="true" protocol-type="ipv4"
   app-protocol="SSH" is-device-model="SSH Service Access Point" locale="en_US">
   <default-sap operation-type="execute-command"/>
   <default-sap operation-type="ping"/>
   <default-sap operation-type="file-transfer"/>
   <credentials search-key="master" is-default="true">
  <rsa-credentials username="root"/>
  </credentials>
  </sap>
  <access-domain-membership>
  <access-domain-name>sample:all-objects</access-domain-name>
  </access-domain-membership>
  </server>
  </datacenter>

  CEC_LPAR.xml
  <!DOCTYPE datacenter PUBLIC "-//Think Dynamics//DTD XML Import//EN"
  "/opt/IBM/tivoli/thinkcontrol/xml/xmlimport.dtd">
  <datacenter>
   <!-- Physical Assets (assure the HMC is already modelled and imported) -->
   <!-- Pool names are strictly for organizational reasons. No function. -->
   <!-- CEC Definition -->
   <server name="power001" pool="hmc67" locale="en_US">
   <property name="LPAR.cec_name" component="DEPLOYMENT_ENGINE" value="power001" />
   <property name="LPAR.cec_type" component="DEPLOYMENT_ENGINE" value="power7" />
   <property name="LPAR.hmc" component="DEPLOYMENT_ENGINE" value="hmc67" />
   <access-domain-membership>
   <access-domain-name>sample:all-objects</access-domain-name>
   </access-domain-membership>
   </server>
   <!-- Virtual Assets (LPARs) -->
   <!-- LPAR definition -->
   <server name="test01.test.com" is-device-model="pSeries Server" pool="power001_lpars" locale="en_US">
   <nic name="nic0" managed="true" netboot-enabled="true">
   <network-interface name="en0" ipaddress="192.168.1.11" netmask="255.255.255.0" management="true">
   <route gateway="192.168.1.1" />
   </network-interface>
   </nic>
   <property name="AIX.install_level" component="DEPLOYMENT_ENGINE" value="" />
   <property name="NIM.bid" component="DEPLOYMENT_ENGINE" value="" />
   <property name="NIM.boot_client" component="DEPLOYMENT_ENGINE" value="no" />
   <property name="NIM.masterID" component="DEPLOYMENT_ENGINE" value="" />
   <property name="NIM.name" component="DEPLOYMENT_ENGINE" value="test01" />
   <property name="NIM.set_bootlist" component="DEPLOYMENT_ENGINE" value="no" />
   <property name="LPAR.host_platform" component="DEPLOYMENT_ENGINE" value="power001" />
   <property name="LPAR.name" component="DEPLOYMENT_ENGINE" value="test01" />
   <property name="LPAR.profile" component="DEPLOYMENT_ENGINE" value="Normal" />
   <property name="LPAR.type" component="DEPLOYMENT_ENGINE" value="lpar" />
   <property name="linux.rhel3" component="DEPLOYMENT_ENGINE" value="eth0" />
   <property name="linux.rhel4" component="DEPLOYMENT_ENGINE" value="eth0" />
   <property name="linux.rhel5" component="DEPLOYMENT_ENGINE" value="eth0" />
   <property name="linux.rhel6" component="DEPLOYMENT_ENGINE" value="eth0" />
   <property name="linux.sles9" component="DEPLOYMENT_ENGINE" value="eth0" />
   <property name="linux.sles10" component="DEPLOYMENT_ENGINE" value="eth0" />
   <property name="linux.sles11" component="DEPLOYMENT_ENGINE" value="eth0" />
   <property name="linux.disk" component="DEPLOYMENT_ENGINE" value="sda" />
   <sap name="test01.test.com-ssh-client" port="22" host="true" protocol-type="ipv4" app-protocol="SSH"
   is-device-model="SSH Service Access Point" locale="en_US">
   <default-sap operation-type="execute-command" />
   <default-sap operation-type="ping" />
   <default-sap operation-type="file-transfer" />
   <credentials search-key="master" is-default="true">
   <rsa-credentials username="root" />
   </credentials>
   </sap>
   <access-domain-membership>
   <access-domain-name>sample:all-objects</access-domain-name>
   </access-domain-membership>
   </server>
  </datacenter>

  AIX_image.xml
  <!DOCTYPE datacenter PUBLIC "-//Think Dynamics//DTD XML Import//EN"
  "/opt/IBM/tivoli/thinkcontrol/xml/xmlimport.dtd">
  <datacenter>
  <!-- AIX Base MKSYSB Image definitions -->
  <!-- AIX 6.1 TL05 -->
  <software-module name="AIX_6.1_TL05_mksysb" version="AIX 6.1 TL05 mksysb"
  title="AIX 6.1 TL05 mksysb" description="AIX 6.1 TL05 mksysb">
  <software-capability type="OS" name="os.family" value="AIX"/>
  <software-capability type="OS" name="os.distribution" value="AIX 6L"/>
  <software-capability type="OS" name="os.name" value="AIX 6L Version 6.1"/>
  <software-capability type="OS" name="os.version" value="6.1"/>
  <software-capability type="OS" name="os.servicepack" value="TL05"/>
  <software-requirement type="HARDWARE" name="cpu.family">
  <software-requirement-value value="powerpc"/>
  </software-requirement>
  <software-requirement type="HARDWARE" name="cpu.type">
  <software-requirement-value value="32-bit"/>
  <software-requirement-value value="64-bit"/>
  </software-requirement>
  <software-resource-template name="AIX_6.1_TL05_mksysb-SRT" software-resource-type="CONFIGURATION">
  <template-param name="NIM.spot" value="new_spot"/>
  <template-param name="NIM.mksysb" value="AIX_61_TL05_Image_mksysb"/>
  <template-param name="NIM.bid" value="bid_ow"/>
  <template-param name="NIM.resolv_conf" value="test_dns"/>
  <template-param name="NIM.fb_script" value="fb_script"/>
  <template-param name="GraceTime" value="7200"/>
  <template-param name="SimulationMode" value="false"/>
  </software-resource-template>
  <image name="AIX_61_TL05_Image_mksysb" description="AIX 6.1 TL05 mksysb" version="TL05"
  is-device-model="image" image-type="Scripted_OS" locale="en_US" status="tested"
  boot-server="nim.test.com">
  </image>
  <access-domain-membership>
  <access-domain-name>sample:all-objects</access-domain-name>
  </access-domain-membership>
  </software-module>
  <!-- End data center module-->
  </datacenter>

  将以上XML文件上传到TPM服务器,在服务器后台终端中,使用tioadmin用户执行如下命令导入相关信息:
  /opt/IBM/tivoli/tpm/tools/xmlimport.sh file:///…/hmc.xml
 

  注:如果本地不使用DNS服务器,一定要将LPAR及HMC、NIM、TPM的IP地址和主机名对应记录写入到TPM服务器上的/etc/hosts文件中。

${PageNumber}

  3) TPM控制台部署系统:

  导入所有模板之后,在TPM控制台中选中NIM服务器,为NIM服务器添加AIX软件。将此NIM服务器定义为启动安装服务器,并为这个服务器启动软件资源。

  进入TPM服务器控制台界面,选择需要部署的LPAR记录,选中安装-->镜像安装

TPM控制台部署系统
▲图4 TPM控制台为LPAR镜像安装AIX

  在对话窗中选择对应的镜像文件后,提交并完成部署请求。

基于IBM TPM实现AIX自动化部署
▲图 5 列表中选择需安装镜像

  3. 利用IBM TPM实现AIX系统自动部署经验总结

  本文分别从原理和实践两方面介绍如何利用TPM结合NIM安装AIX系统,实现对LPAR的自动化部署,如何通过管理镜像文件来满足不同的系统定制需求,从而提高系统的部署效率和灵活性,进而为Power虚拟化平台提供有力的技术支持。

  本文用实例着重说明TPM中利用NIM的镜像安装方式去自动部署AIX系统,通过TPM工具以导入定义XML模板方式初始化DCM对象,并给出相应配置示例及配置过程中注意要点。

  作者简介:

基于IBM TPM实现AIX自动化部署曲家富 系统工程师 职于某大型外资IT企业,从事系统管理工作,专注于系统自动化部署。

基于IBM TPM实现AIX自动化部署王益斌 系统架构师任职于某大型外资IT企业,从事信息技术服务工作。熟悉IBM System x系列服务器,IBM Power System系列服务器,IBM DS系列存储器产品;熟悉IBM DB2数据库,熟悉IBM WAS应用服务器,熟悉IBM ITM监控管理平台。负责规划、设计和部署企业云计算平台环境。

  参考资料:  IBM Redbook NIM from A to Z in AIX 5L
  http://www.redbooks.ibm.com/redbooks/pdfs/sg247296.pdf

  Tivoli Provisioning Manager (TPM) 7.2.1 guides
  http://pic.dhe.ibm.com/infocenter/tivihelp/v45r1/topic/com.ibm.tivoli.tpm.scenario.doc

/overview/covw_provguides.html
 

 

0
相关文章