使用 NIM 资源部署自定义的 AIX 系统
2008-12-30 08:33:25 来源:WEB开发网本文示例源代码或素材下载
引言
NIM 是系统管理人员远程、批量安装 AIX 系统的常用工具。它提供了一些向导程序,如 nim_master_setup,简化了 NIM 的基本配置。但是这种配置下的 NIM 所提供的 AIX 远程安装服务,往往不能满足系统管理人员的自动化安装需求。比如,系统管理人员还是要手工设置 DNS 或 LVM,又或是另行安装一些未与 AIX 捆绑的常用软件,如 bash。为了进一步提高安装的自动化,NIM 提供了多种资源。
NIM 资源概述
NIM 资源本质上是一个指针,指向一个存储着安装包的目录,或是某个配置文件。NIM master 负责管理这些资源,并在提供 NIM client 操作系统安装和软件维护服务时,通过 NFS 协议共享给 NIM client 来使用。下面列出了本文重点讨论的几种 NIM 资源:
lpp_source: lpp_source 指向一个目录,这个目录按照 NIM 规定的结构存储 AIX 的各种安装包。lpp_source 分两种,如果所指的目录中存储的安装包集合包含了实现 AIX 操作系统安装所需的基本组件 (BOS installation),那么这种 lpp_source 就称具有 simages 属性。这种 lpp_source 分配给某个 NIM client 后,NIM master 就可以执行在该 NIM client 上安装操作系统的任务了。反之,NIM master 就只能执行一些软件维护的任务。simages 属性在创建 lpp_source 时由 NIM 判断产生。利用 NIM 提供的向导,如 nim_master_setup,用户可以方便的生成具有 simages 属性的 lpp_source。如果用户还需要在安装过程中加入自定义的软件,则要将该软件的安装包按照 NIM 的规定复制到 lpp_source 的特定目录下。
installp_bundle: installp_bundle 指向一个配置文件,用于从 lpp_source 中选择需要的 AIX 安装包。因此,如果用户需要加入自定义的软件,除了要将安装包拷贝到 lpp_source,还需要通过 installp_bundle 来明确声明这个安装包。
resolv_conf: resolv_conf 指向的配置文件在安装过程中被用于设置 NIM Client 的 DNS。尽管 NIM 在安装过程中已经自动完成了对 NIM client 的基本网络配置,如对主机名、IP 地址、网关等的配置。但是 DNS 这方面,还是需要使用 resolv_conf 来进行配置。
image_data: image_data 所指向的配置文件定义了 NIM client 的根卷组 (root Volume Group) 以及文件系统。NIM 在安装操作系统的初期,会根据 NIM client 的环境进行根卷组的配置。用户可以使用 image_data 来修改这个默认设置,例如,扩容某个逻辑卷 (Logical Volume) 以及做为该卷挂载点 (mount) 的目录,或是扩大默认的页面空间 (Paging Space)。这一点对于需要在安装过程中加入自定义软件的用户来说比较重要,因为某些自定义软件在安装过程中不会自动扩充安装目录,安装目录容量过小会导致这些软件的安装失败。image_data 的配置需要用户对 AIX 的相关文件系统有比较深入的理解。
bosinst_data: bosinst_data 所指向的配置文件预填了在进行 AIX 操作系统安装时所需回答的问题,如是否接受 Licenses 或是安装 CDE 等。
fb_script 和 script: fb_script 通常指向一个 shell 脚本,该脚本会在 AIX 操作系统安装完后的首次引导时执行。NIM 还有一个类似的资源 script。两者的区别在于执行的时间点不同,script 资源所指的脚本在早些时候被调用。具体的时间点是在操作系统的安装过程中,所有的软件包安装完成之后。这个时间点上,某些守护进程并没有启动,无法执行一些配置工作,如硬件的配置,或是远程挂载一些目录等等,所以使用 fb_script 相对来说比较方便一些。当然,除了配置硬件以外,fb_script 也可以用来设定 root 的密码和默认 shell 等等。
adapter_def: adapter_def 所指向的目录包含了配置双网卡所需要的信息。
还有一些资源,如 tmp、root 和 home 等,是用于无盘工作站 (diskless station) 的安装配置,这里就不详述了。
配置需求
本节通过一个配置实例来进一步阐述 NIM 资源的使用。下面的表格列出了配置的需求:
类型 | 需求 |
NIM master 操作系统 | AIX6.1.0.0 |
NIM client 操作系统 | AIX6.1.0.0 |
附加软件 | bash-3.0-1, openssh.* |
域 | ibm.com |
NameServer | 192.168.1.1 |
页面空间 | 1G |
/opt 目录大小 | 4G |
root 密码 / 默认 shell | abcdefg/bash |
NIM 资源清单
下面是使用 "NIM 资源概述 " 介绍的工具来满足配置需求的一种实现。下表列出了所需定义的资源以及其所指向的配置文件或者相关目录,本文所用到的配置文件可以直接 下载 :
资源类型 | 资源名称 | 指向的配置文件或目录 |
lpp_source | lpp_AIX6_1 | /export/lpp_source/lpp_AIX6_1.d |
spot | spot_AIX6_1 | /export/spot/spot_AIX6_1 |
installp_bundle | Extra_AIX6_1_bnd | /export/installp_bundle/Extra_AIX6_1.bnd |
resolv_conf | resolv_AIX6_1_conf | /export/resolv_conf/resolv_AIX6_1.conf |
image_data | image_AIX6_1_data | /export/image_data/image_AIX6_1.data |
bosinst_data | bosinst_AIX6_1_data | /export/bosinst_data/bosinst_AIX6_1.data |
fb_script | fb_AIX6_1_sh | /export/fb_script/fb_AIX6_1.sh |
NIM 资源的创建
一个完整的配置过程,除了按照 "NIM 资源清单 " 定义所需的资源外,还包括 NIM master 的初始化以及 NIM Client 的资源分配等步骤。
NIM master 的初始化
首先,用户需要将 AIX6.1.0.0 的安装光盘放置在担任 NIM master 的机器的光驱中,接下来用户就可以使用 nim_master_setup 等工具来安装和配置 NIM master。下面列出了五条命令:
-bash-3.00# nim_master_setup -B -a mk_resource=no
-a file_system=/export
-bash-3.00# mkdir -p /export/lpp_source/lpp_AIX6_1.d
-bash-3.00# nim -o define -t lpp_source
-a server=master
-a location=/export/lpp_source/lpp_AIX6_1.d
-a source=/dev/cd0 lpp_AIX6_1
-bash-3.00# mkdir -p /export/spot
-bash-3.00# nim -o define -t spot -a server=master
-a location=/export/spot -a source=lpp_AIX6_1
-a installp_flags=-aQg spot_AIX6_1
这五条命令中,第一条命令用 nim_master_setup 来安装 NIM 自身所需的安装包,并生成 master、master_net 和 boot。第二、三条命令创建目录 "/export/lpp_source/lpp_AIX6_1.d",将 AIX6.1.0.0 的安装包从光驱拷贝到新创建的目录,然后创建资源 lpp_AIX6_1 来管理这个目录。当然,lpp_AIX6_1 是带有 simages 属性的。第四、五条命令创建目录 "/export/spot",从 lpp_AIX6_1 生成 SPOT 资源 spot_AIX6_1。用户可以参考 " 网络安装管理器的强大功能 " 获得关于 NIM master 配置更详细的描述。用户可以使用如下命令来验证执行结果:
-bash-3.00# lsnim
master machines master
boot resources boot
master_net networks ent
lpp_AIX6_1 resources lpp_source
spot_AIX6_1 resources spot
lpp_source 的修改
NIM 6.1.1.1 支持四种安装文件:BFF、RPM、ISMP 和 Interim Fix format,本文只涉及前两种格式。BFF 就是 AIX 的 installp 格式,存储在 lpp_source 所指的目录下的 installp/ppc 子目录。而 rpm 格式则存储在 RPMS/ppc 子目录下。用户自定义的安装包如果要被 NIM 找到,也需要根据安装包的类型拷贝到指定目录下。例如将 "bash-3.0-1.aix5.1.ppc.rpm" 拷贝到 "/export/lpp_source/lpp_AIX6_1.d/RPMS/ppc" 下,将 "openssh.*" 和 "openssl.*" 拷贝到 "/export/lpp_source/lpp_AIX6_1.d/installp/ppc" 下。拷贝完成后,使用如下命令检查结果:
-bash-3.00# nim -o lslpp lpp_AIX6_1 | egrep 'bash|ssh'
openssh.base
openssh.base.client
openssh.base.server
openssh.license
openssh.license
openssh.man.en_US
openssh.man.en_US
bash-3.0
bash-3.0
installp_bundle 的定义
接着,用户需要创建 installp_bundle 来选择需要安装的软件包。下面是配置文件 "Extra_AIX6_1.bnd" 的内容 :
-bash-3.00# cat /export/installp_bundle/Extra_AIX6_1.bnd
I:openssh.license
I:openssh.man.en_US
I:openssh.base.client
I:openssh.base.server
I:openssl.license
I:openssl.base
I:openssl.man.en_US
R:bash-3.0
每行由符号 ':' 分成两部分,左边的字符表示安装包的格式。'I' 代表 BFF 格式,'R' 表示 RPM 格式。右边是安装包的名称,可以用上一操作 "lpp_source 的修改 " 获得。生成配置文件后,就可以用如下命令创建 installp_bundle 类型的 NIM 资源 Extra_AIX6_1_bnd 了:
-bash-3.00# nim -o define
-t installp_bundle -a server=master
-a location=/export/installp_bundle/Extra_AIX6_1.bnd
Extra_AIX6_1_bnd
resolv_conf 的定义
接下来是创建 resolv_conf。首先是创建用于 DNS 配置文件 resolv_AIX6_1.conf。本例中,域名服务器设置为 192.168.1.1,默认域为 "ibm.com"。具体的语法,请参考 "Files Reference" 关于系统文件 "/etc/resolv.conf" 的描述。有了配置文件,就可以创建 resolv_AIX6_1_conf。下面是具体的命令:
-bash-3.00# cat /export/resolv_conf/resolv_AIX6_1.conf
nameserver 192.168.1.1
domain ibm.com
-bash-3.00# nim -o define -t resolv_conf -a server=master
-a location=/export/resolv_conf/resolv_AIX6_1.conf
resolv_AIX6_1_conf
image_data 的定义
下面是 image_data 资源的配置。首先需要创建配置文件 "image_AIX6_1.data",该文件通常不需要用户从头写起,有两种办法可以得到默板。一是通过 AIX 命令 mkszfile 创建 "/image.data",这个文件记录了所在的 AIX 的根卷组 (root Volume Group) 以及文件系统的信息,用户可以在这个基础上进行修改。需要注意的是,配置文件的语法与 AIX 系统的版本有关。二是在 spot 资源所指向的目录下有一个 "image.data" 文件,如本例中的 "/export/spot/spot_AIX6_1/image.data",也可以作为模板来修改。下面列出配置文件中与修改相关的部分 :
-bash-3.00# cat /export/image_data/image_AIX6_1.data
......
lv_data:
VOLUME_GROUP= rootvg
LOGICAL_VOLUME= hd6
TYPE= paging
LPs= 256
PP_SIZE= 4
PP= 256
......
lv_data:
VOLUME_GROUP= rootvg
LOGICAL_VOLUME= hd10opt
TYPE= jfs2
LPs= 32
MOUNT_POINT= /opt
PP_SIZE= 128
PP= 32
......
fs_data:
FS_NAME= /opt
FS_SIZE= 8388608
FS_LV= /dev/hd10opt
......
因为需求是扩容逻辑卷,所以修改集中在 LPs、PP 这两项上。LPs 表示该逻辑卷逻辑分区 LP(Logical Partition) 的数量,PP 表示分配的物理分区 (Physical Partition) 的数量。在这里,LPs 和 PP 的值是一样的。PP_SIZE 是物理分区的大小,以 Megabyte 为单位。逻辑卷的大小就可以通过计算 PP 和 PP_SIZE 的乘积得到。从上面的配置可以看出,逻辑卷 hd6 大小是 1G。因为 hd6 被用作页面空间,所以页面空间就被扩容为 1G。逻辑卷 hd10opt 大小是 4G,因为 hd10opt 会被挂载到目录 /opt,所以还需要修改 /opt 目录的大小 FS_SIZE 以保持一致。FS_SIZE 的单位是 512 字节。具体的参数解释,用户可以参考 "Files Reference" 关于 "image.data" 的描述。用户也可以通过 "AIX Logical Volume Manager, from A to Z: Introduction and Concepts" 了解更多关于 LVM 的知识。在得到配置文件 "/export/image_data/image_AIX6_1.data" 后,就可以用如下命令创建 image_data 资源了 :
-bash-3.00# nim -o define -t image_data -a server=master
-a location=/export/image_data/image_AIX6_1.data
image_AIX6_1_data
bosinst_data 的定义
然后是 bosinst_data 相关的配置,该配置文件的模版也可以从 spot 资源所指目录中,也就是 "/export/spot/spot_AIX6_1/bosinst.data",获得。下面列出对该模版的修改部分 :
-bash-3.00# cat /export/spot/spot_AIX6_1/bosinst.data
control_flow:
CONSOLE = Default
INSTALL_METHOD = overwrite
PROMPT = no
EXISTING_SYSTEM_OVERWRITE = yes
ACCEPT_LICENSES = yes
.......
修改主要集中在是否覆盖原有操作系统 EXISTING_SYSTEM_OVERWRITE,是否接受 License 这两方面。还有其他一些选项,用户可以参考 "Files Reference" 中关于 "bosinst.data" 的描述。在得到配置文件后,就可以用如下命令创建 bosinst_data 资源了 :
-bash-3.00# nim -o define
-t bosinst_data -a server=master
-a location=/export/bosinst_data/bosinst_AIX6_1.data
bosinst_AIX6_1_data
fs_script 的定义
最后是 fs_script 资源的设置。首先是创建需要执行的 shell 脚本 "/export/fb_script/fb_AIX6_1.sh",该脚本分成两个部分:第一个部分是使用命令 chpasswd 设置 root 账号的密码为 "abcdefg"。第二部分用 sed 编辑 "/etc/passwd" 文件来设置 root 账号的默认 shell。用户可以用 shell 选项 '-n' 来检查脚本语法的正确性。
-bash-3.00# cat /export/fb_script/fb_AIX6_1.sh
# set root's passwd
echo root:abcdefg | chpasswd; pwdadm -c root
# set bash as default shell
if rpm -aq | grep bash
then
if sed '/^root/s//usr/bin/ksh//usr/bin/bash/' /etc/passwd > /tmp/passwd
then
cp -f /tmp/passwd /etc/passwd
fi
fi
-bash-3.00# ksh -xvn /export/fb_script/fb_AIX6_1.sh
编辑完 "/export/fb_script/fb_AIX6_1.sh",就可以用如下命令创建 fs_script 资源了:
-bash-3.00# nim -o define -t fs_script -a server=master
-a location=/export/fb_script/fb_AIX6_1.sh fb_AIX6_1_sh
最后的检查
创建完上述的资源后,可以用如下命令来检查所有的步骤是否正确执行:
-bash-3.00# lsnim
master machines master
boot resources boot
master_net networks ent
lpp_AIX6_1 resources lpp_source
spot_AIX6_1 resources spot
Extra_AIX6_1_bnd resources installp_bundle
resolv_AIX6_1_conf resources resolv_conf
image_AIX6_1_data resources image_data
bosinst_AIX6_1_data resources bosinst_data
fb_AIX6_1_sh resources fb_script
开始安装
在上面的步骤都成功完成以后,就可以进行 AIX 的安装了:
-bash-3.00# nim -o define -t standalone
-a if1="master_net aix01 0" aix01
-bash-3.00# nim -o allocate
-a lpp_source=lpp_AIX6_1
-a spot=spot_AIX6_1
-a installp_bundle=Extra_AIX6_1_bnd
-a resolv_conf=resolv_AIX6_1_conf
-a image_data=image_AIX6_1_data
-a bosinst_data=bosinst_AIX6_1_data
-a fb_script=fb_AIX6_1_sh
aix01
-bash-3.00# nim -o bos_inst
-a source=rte
-a installp_flags=agX
-a accept_licenses=yes aix01
第一条命令在 NIM 维护的数据库里定义了一个 NIM Client "aix01","aix01" 所在网络由 master_net 指定,主机名仍然是 "aix01"。第二条命令将前面定义的资源都分配给 "aix01",这样在安装 AIX6.1.0.0 到 "aix01" 的过程中,就可以使用这些资源实现安装的自动化了。最后一条命令执行 AIX 操作系统的 BOS 安装。
结论
NIM 资源提供给系统管理人员按需定制以及远程批量部署 AIX 操作系统的机制。而系统测试人员也可以利用这一机制,再结合 HMC 的 mksyscfg、chsysstate 这些 LPAR 的创建和管理接口,方便的写出从虚拟机的创建到操作系统的安装的自动化脚本。从而实现基于虚拟技术的测试环境的自动化搭建工作。
赞助商链接