构建机房运维基础架构(五): 装机问题汇总(DELL)

1. 获取控制卡IP失败

控制卡没有通过DHCP获取到IP,需要检查网线和控制卡配置。

控制卡的正确配置参考此链接

 

2. NO DHCP OR proxyDHCP 

内网卡没法通过DHCP 获取到IP,请检查DHCP服务,一般的问题是:
1) 新机器内网段没在DHCP配置里面添加
2) 内网网线没插好
3) 交换机没配置DHCP relay

 

3. Media test failure

网线没插好,需要检查。

 

4. 拿不到网卡信息

/admin1-> racadm get NIC.NICConfig
ERROR: SWC0244 : Invalid Fully Qualified Device Descriptor (FQDD).

——————————————————————————-
Valid Options:

System.Power
System.Power.Supply
iDRAC.IMC
LifecycleController.LCAttributes
System.LCD
iDRAC.SNMP.Alert
System.Location

猜测和固件版本过低有关,待确认。

DELL的回复:

有异常的的这台7SK45W1是去年的机器,有可能是idrac固件版本较低的缘故。
BIOS.BiosBootSettings.BootSeq 这个参数在1.50.50版本上看到的。

1.之前的版本命令行格式可能不一样,您可以输入BIOS后按tab让其自动补全看看。

2.请web检查下idrac web界面能否正常登陆,如果无法正常登陆,请重启idrac后再尝试。
有两种方式可以让idrac重启重新初始化:
(a.长按前面板i键20秒,idrac会重启初始化  b.关机后拔掉电源线,长按电源开关按键15秒,后再插上电源线开机)

3.您也可以更新至新版idrac固件后再尝试,版本如果差太多的话,请先刷新至1.40.40后在更新至1.56.55
http://ftp.dell.com/FOLDER02069189M/1/ESM_Firmware_V554G_WN32_1.56.55_A00.EXE
http://ftp.dell.com/FOLDER01526113M/1/ESM_Firmware_F5F8N_WN32_1.40.40_A00.EXE

(登陆到idrac web页面下的更新与回滚,直接上传更新)

 

5. 设置不了启动顺序

第一种报错:
/admin1-> racadm set BIOS.BiosBootSettings.BootSeq HardDisk.List.1-1,NIC.Integrated.1-2-1

ERROR: BOOT018: Specified boot control list is read-only.
Verify the dependencies of the objects under the specified group using
“racadm help <device class>.<groupname>”, and retry the operation.

可能是硬盘没做RAID,尝试重做RAID 。

– – – – – – – – – – – – – – – – – – – – – – – –

第二种报错:
/admin1-> racadm set BIOS.BiosBootSettings.BootSeq HardDisk.List.1-1,NIC.Integrated.1-2-1

ERROR: BOOT016: Input source argument value for the boot device is incorrect or
     not found among the boot devices on the system.

这种报错,登陆到BIOS里面的启动设置选项,发现启动顺利里面没有第二块网卡,只有第一块。

这个问题的原因:

原来第一块网卡设置成了PXE,第二块网卡被设置成了 NONE,这TMD 也有影响 ,狗日的DELL 初始化居然没做 ! ! !

update at  Wed May 14 18:57:49 CST 2014 :

关于这个问题,我今天又遇到一个原因,就是  硬盘都是裸盘,没做RAID ,所以就废掉了。

– – – – – – – – – – – – – – – – – – – – – – – –

第三种报错:
/admin1-> racadm set BIOS.BiosBootSettings.BootSeq HardDisk.List.1-1,NIC.Integrated.1-2-1
[Key=BIOS.Setup.1-1#BiosBootSettings]
RAC1017: Successfully modified the object value and the change is in
pending state.
To apply modified value, create a configuration job and reboot
the system. To create the commit and reboot jobs, use “jobqueue”
command. For more information about the “jobqueue” command, see RACADM
help.
/admin1->
/admin1-> racadm jobqueue delete –all
/admin1-> racadm jobqueue create BIOS.Setup.1-1 -r pwrcycle -s TIME_NOW
ERROR: SUP002: Job creation failure. Retry the action. If this fails, reboot the iDRAC.

重启方法:
/admin1-> racadm racreset
RAC reset operation initiated successfully. It may take a few
minutes for the RAC to come online again.

另外,想重设idrac 配置,用 racadm racresetcfg

 

6. 设置网卡支持PXE启动报错

第一种报错:

/admin1-> racadm set NIC.NICConfig.2.LegacyBootProto PXE
[Key=NIC.Slot.1-2-1#NICConfig]
RAC1017: Successfully modified the object value and the change is in
pending state.
To apply modified value, create a configuration job and reboot
the system. To create the commit and reboot jobs, use “jobqueue”
command. For more information about the “jobqueue” command, see RACADM
help.
/admin1-> racadm jobqueue create NIC.Embedded.2-1-1 -r pwrcycle -s TIME_NOW
ERROR: RAC944: Unable to create the configuration job. Run “racadm set LifecycleController.LCAttributes.LifecycleControllerState 1” to enable Lifecycle Controller, and retry the operation.

根据提示,执行一下 蓝色的命令就好了。

/admin1-> racadm set LifecycleController.LCAttributes.LifecycleControllerState 1
Object value modified successfully

/admin1-> racadm jobqueue create NIC.Embedded.2-1-1 -r pwrcycle -s TIME_NOW
RAC1024: Successfully scheduled a job.
Verify the job status using “racadm jobqueue view -i JID_xxxxx” command.
Commit JID = JID_057986530557
Reboot JID = RID_057986531087

第二种报错:
/admin1-> racadm set NIC.NICConfig.2.LegacyBootProto PXE
[Key=NIC.Slot.1-2-1#NICConfig]
RAC1017: Successfully modified the object value and the change is in
pending state.
To apply modified value, create a configuration job and reboot
the system. To create the commit and reboot jobs, use “jobqueue”
command. For more information about the “jobqueue” command, see RACADM
help.
/admin1-> racadm jobqueue create NIC.Embedded.2-1-1 -r pwrcycle -s TIME_NOW
ERROR: SWC0244 : Invalid Fully Qualified Device Descriptor (FQDD).

这个错误我也不知道原因,但是手动重启之后机器会自己初始化,自己就好了。

 

7. 重启失败

/admin1-> racadm serveraction powercycle
ERROR: Timeout while waiting for server to perform requested power action.

查看页面,发现机器没法启动,重启了idrac卡就好了。

/admin1-> racadm racreset
RAC reset operation initiated successfully. It may take a few
minutes for the RAC to come online again.

/admin1-> racadm serveraction powercycle
Server power operation successful

注:如果查看电源状态,使用 racadm serveraction powerstatus

 

8. 连接ILO IP 报 No more sessions are available for this type of connection!

比如,

$ ssh root@10.2.8.195
root@10.2.8.195’s password:

No more sessions are available for this type of connection!

Connection to 10.2.8.195 closed.

用浏览器访问也会报这个错。

可以用ipmitool 命令把 控制卡冷重启了。
# ipmitool -I lanplus -H IP -U 用户名 -P 密码 mc reset cold 

DELL 机器上,要启用 LAN 上 IPMI,否则会报 Error: Unable to establish IPMI v2 / RMCP+ session 。

111110d2924e5f5261407fda7d6477cb2e302

(如果是本机,可以用 ipmitool mc reset cold,经实际测试,此命令不会重启操作系统,只是重启控制卡)

这个链接数超限的问题 可以通过升级 idrac 卡的 firmware 来解决。
1.57.57 版本的 firmware 下载地址

该版本的 bug fix 中提到过一点:
– Fix for issues that cause iDRAC7 sluggish responsiveness after a prolonged period of time (approx. 45-100 days, depending on the usage). In some cases, if the iDRAC is not reset, the iDRAC may become unresponsive and requires a server AC Power on reset. This issue was introduced in firmware release 1.50.50 and fixed in 1.56.55.

 

装机系统原理在这

 

构建机房运维基础架构(四): 机器装机初始配置(DELL)

我们的服务器基本是DELL的,所以下面的配置是针对DELL 最新的R420 R720等服务器的,机器在经过下面的配置之后运到机房,插线之后即可通过SN解析到控制卡IP。

其他机器型号(HP,HUAWEI等)的配置找其他资料哈。

 

1.  把第一块网卡设置成 none,第二块网卡设置成 PXE 启动模式(出厂默认第一块网卡是PXE模式,我们自己用第二块网卡装机,所以给第一块关掉。)

如下:

CTRL + S 进入配置

cc9fb7c0985a670ee56e917d11b8cad4

 

2. 关于远程控制卡,需要设置为 Dedicated 模式,开启 DHCP,并使用DHCP获取到的DNS (因为我们的远程控制卡IP是自动获取的,用来装机,这点很重要)

222

8388bd6b0ea330eaa5349e772bb54080

76c9349f8bd80b57dc6521d6066192bd

 

3. Boot Mode 和 Boot Seq 设置  (720 720xd等 默认是UEFI,把它改成 BIOS;启动顺序 为 Hard drive C:,第二块网卡,第一块网卡。 )

3dacb5207bfe3be34b84b8dda1b02dbc

4fff19561d207d2b03ab04bf8071847f

 

 

 

这里只列出了自动装机需要的配置,其他的配置比如电源设置、风扇设置等没写,可以参考:

https://www.evernote.com/shard/s240/sh/292d15ba-404d-4d54-912e-ff5fa325713d/c67904c014276b864364104b48017612

 

 

 

构建机房运维基础架构(三): 自动装机流程

流程

1. 根据 SN 去 DDNS 请求 ILO IP

2. 设置第二块网卡支持PXE启动 (通过 ssh root@$iloip 设置)。

3. 设置启动顺序,硬盘启动第一优先级,第二块网卡第二优先级。

4. 设置机器从PXE启动一次。

5. 重启

6. 拷贝对应的tftp 配置文件(根据mac地址命名文件名)

7. 机器从第二块网卡启动PXE,通过DHCP获取到IP,DHCP告诉机器 tftp服务器的IP

8. 机器连接tftp服务器,获取内核文件,加载内核,并获取到 tftp配置文件,并根据配置文件去请求 ks 文件。

9. 拿到ks文件,执行装机流程,包括 语言、时区、硬盘格式化、防火墙 等等。

10. 执行到post阶段,开始执行自己的自定义脚本。

11. 我们的装机类型有三种:
1) raw_clean (纯净物理机)
2) kvm_host  (宿主机)
3) kvm_guest (虚拟机)

我们的自定义脚本是post_install.sh ,会自动装好三种 类型的机器;脚本做的最重要的事情有:
1) 通用初始化
2) 获取主机名和IP,并配置到系统
3) 准备好增加本机主机名到DNS的脚本到机器上。
4) 准备puppet执行环境

这个脚本也是最可能需要动的了。

12. post 阶段 之后 是 重启,重启之后DNS脚本自动执行,把自己的主机名增加DNS,然后Puppet 开始执行初始化环境 ( Puppet会自动把资产和监控的客户端安装好,资产的客户端会把机器信息上传到资产系统 )。

 

注意的问题

1. 物理装机我们用DHCP指定的 DNS —

    option domain-name-servers 10.0.12.234;
    option domain-name “nosa.me;

虚拟机装机的时候在virt-install 命令里 要手动指定一个 dns server —

   -x “ip=xxx netmask=xxx gateway=xxx dns=xxx “ 

这样会解析所有的全域名,但是遇到 前缀域名就完蛋了,因为 kickstart 不支持search nosa.me 之类的语法;这个问题导致了我的Puppet 不能工作,初始化失败。

所以可以在post阶段 执行下面这个命令:
  echo “search nosa.me” >>/etc/resolv.conf

此乃大坑。

构建机房运维基础架构(二): 自动装机系统原理

接着上篇(机房装机环境搭建),说说实现一个自动装机系统的原理,实际上我的理想的装机方式是能够把一个裸机房(只有网络,没有任何已经安装好的机器)所有的机器都通过远程的方式安装起来,而不用先手动在本机房安装一台”安装服务器”,要做到这一点,需要把本机房和远程机房控制卡网络和机器内网都打通,让本机房的机器上架之后控制卡网卡可以从远程机房的DDNS获取IP,内网网卡可以通过远程机房的DHCP获取IP,如此即可。豌豆荚现在只打通了内网,控制卡网没有打通,这是后续可以做的,其实这很牛逼的。

我们用的机器基本上是DELL的,所以本文介绍一下DELL服务器自动装机的原理,这里所说的自动装机指的是 服务器上架之后,通过机器的SN 来装机的过程,单机安装不到10分钟时间,工程师只需要点一下鼠标。

首先我们买的机器有一个出厂设置,最主要的是控制卡的网络要设置成DHCP,我们在机房搭建了DDNS服务,控制卡通过DDNS来获取IP,同时控制卡DHCP的时候会带上主机名(格式是:idrac-SN),所以DDNS也会记录下主机名和IP的映射关系。这样,机器上架后我们就可以通过SN 来解析到控制卡的IP了,这是自动装机的基础。

这里假设从第二块网卡装机(内网)。

 

装机过程:

1.拿到机器控制卡 IP (ddns) 和 密码

 

2.检查SN (控制卡ip是用sn从DDNS获取的,连上控制卡之后检查下sn是不是对的,为了安全嘛)

 

3.拿到网卡信息

(先ssh root@控制卡IP 后 再执行下面命令)

/admin1-> racadm get NIC.NICConfig
NIC.NICConfig.1 [Key=NIC.Integrated.1-1-1#NICConfig]
NIC.NICConfig.2 [Key=NIC.Integrated.1-2-1#NICConfig]
NIC.NICConfig.3 [Key=NIC.Integrated.1-3-1#NICConfig]
NIC.NICConfig.4 [Key=NIC.Integrated.1-4-1#NICConfig]

如果从第二块网卡装机,那么拿到的是 NIC.Integrated.1-2-1

还有一种网卡叫 NIC.Embedded,那么第二块网卡是 NIC.Embedded.2-1-1

 

4.设置启动顺序

如果 用 NIC.Integrated.1-2-1  ,启动顺序设置成HardDisk.List.1-1,NIC.Integrated.1-2-1

查看用:

racadm get BIOS.BiosBootSettings.BootSeq

设置启动顺序用:

racadm set BIOS.BiosBootSettings.BootSeq HardDisk.List.1-1,NIC.Integrated.1-2-1

生效:
(我发现有的机器不需要执行这步,只执行上一个命令就行,难道是版本的问题 或者 ?)
(增加 jobqueue,让设置重启生效(因为重启和设置需要挺长时间,最好sleep一段时间 。)

racadm jobqueue delete –all

racadm jobqueue create BIOS.Setup.1-1 -r pwrcycle -s TIME_NOW

sleep 600

另外,看jobqueue 可以用 命令  racadm jobqueue view

 

5.设置第二块网卡支持PXE启动

下面是可以参考的一个函数:

def enable_nic_pxe(self, nic):
    if nic == "NIC.Embedded.2-1-1":
        cmd1 = r"racadm set NIC.NICConfig.2.LegacyBootProto PXE"
        cmd2 = r"racadm jobqueue create NIC.Embedded.2-1-1 -r pwrcycle -s TIME_NOW"
    elif nic == "NIC.Embedded.1-1-1”:
        cmd1 = r"racadm set NIC.NICConfig.1.LegacyBootProto PXE"
        cmd2 = r"racadm jobqueue create NIC.Embedded.1-1-1 -r pwrcycle -s TIME_NOW"
    elif nic == "NIC.Integrated.1-2-1":
        cmd1 = r"racadm set NIC.NICConfig.2.LegacyBootProto PXE"
        cmd2 = r"racadm jobqueue create NIC.Integrated.1-2-1 -r pwrcycle -s TIME_NOW"
    elif nic == "NIC.Integrated.1-1-1":
        cmd1 = r"racadm set NIC.NICConfig.1.LegacyBootProto PXE"
        cmd2 = r"racadm jobqueue create NIC.Integrated.1-1-1 -r pwrcycle -s TIME_NOW"
    else:
        return "nic not support"

    cmd = r"racadm jobqueue delete --all"
    self.ssh_cmd(cmd)
    self.ssh_cmd(cmd1)
    self.ssh_cmd(cmd2)

    time.sleep(600)

cmd1 命令是设置;

cmd2 是增加 jobqueue,让设置立即重启生效

 

6.设置系统从PXE启动一次

racadm config -g cfgServerInfo -o cfgServerBootOnce 1

racadm config -g cfgServerInfo -o cfgServerFirstBootDevice PXE

 

7.重启

racadm serveraction powercycle

 

8.拷贝ks配置文件(为了避免手动输入; 装完之后要记得删除ks文件)

拿到第二块网卡的MAC地址

/admin1-> racadm getsysinfo -s

System Information:
System Model            = PowerEdge R720xd
System Revision         = I
System BIOS Version     = 2.1.3
Service Tag             = 5NK6G02
Express Svc Code        = 12308526722
Host Name               =
OS Name                 =
OS Version              =
Power Status            = ON
Fresh Air Capable       = Yes

Embedded NIC MAC Addresses:
NIC.Integrated.1-3-1    Ethernet                = F8:BC:12:34:E9:EE
WWN                     = F8:BC:12:34:E9:EE
NIC.Integrated.1-4-1    Ethernet                = F8:BC:12:34:E9:EF
WWN                     = F8:BC:12:34:E9:EF
NIC.Integrated.1-1-1    Ethernet                = F8:BC:12:34:E9:EC
WWN                     = F8:BC:12:34:E9:EC
NIC.Integrated.1-2-1    Ethernet                = F8:BC:12:34:E9:ED
WWN                     = F8:BC:12:34:E9:ED

把ks 配置文件 拷贝到 pxelinux.cfg 目录下,名称是处理后的MAC地址,比如:

F8:BC:12:34:E9:ED

====>

01-f8-bc-12-34-e9:ed

处理方式是 把 冒号 换成 – ,大写换成小写,前面加上 01-

 

目前装机系统没有页面,只有 API,我们通过 Jenkins 调用,界面如下:

f01f53c9-3401-4c1b-9431-00941d615e79

 

构建机房运维基础架构(一): 机房装机环境搭建

最近一直在思考运维该怎么做,该做成什么样,怎么才能把一向苦逼的运维变的不再苦逼,怎么解决运维和开发之间的矛盾,怎么改变运维弱势的地位,依然未有成型的思考,知道前方路漫漫,一点一点来吧。

于是想总结下了,把自己知道的写下来,写的过程中也能继续思考,给未来一点思路。那么,这个专题- 构建机房运维基础架构,就开始吧。

 

原理介绍

pxe 是一种网卡支持的引导方式,我们只是用它来网络引导,实现远程装机的目的。

首先要配置网卡支持PXE启动模式,DELL R420 – R720 机器 开机 CTRL + S 进入配置界面,设置成如下:

4b707f088c331ce0145518accdd7a386

下面看一下典型网络安装系统的流程:

2225c9968dfcb88938937bb09846068c67d

这里用了三个服务:

dhcp –用来供网卡(内网卡)获取动态IP

tftp    –用来获取基础os环境和安装ks文件

nfs    –提供iso镜像文件

这里我们用 httpd 来代替 nfs,nfs在大规模装机的时候可能会有问题。

 

搭建PXE服务器

那么,搭建一台PXE服务器其实就是 配置三个服务:

dhcp  tftp  httpd (nginx)

下面我们在centos6.3 上面来安装配置PXE。

 

安装nginx dhcp tftp

yum -y install nginx dhcp xinetd tftp-server

 

dhcp的配置文件路径:
/etc/dhcp/dhcpd.conf

修改这个文件,写入:

ddns-update-style interim;
ignore client-updates;
allow unknown-clients;
allow bootp;
allow booting;
ping-check true;
default-lease-time 900;
max-lease-time 1200;
next-server 10.0.11.12;
filename “/pxelinux.0”;
option domain-name-servers 10.0.12.234;
option domain-name “nosa.me“;

subnet 10.0.11.0 netmask 255.255.255.0 {
option routers  10.0.11.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.0.11.100 10.0.11.250;
}
subnet 10.0.21.0 netmask 255.255.255.0 {
option routers  10.0.21.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.0.21.100 10.0.21.250;
}
很简单,10.0.11.12  是 tftp 的IP,DHCP分配给client IP 之后会指导客户端去请求 10.0.11.12 tftp 服务的 /pxelinux.0 文件 .

由于指定了domain-name-serves 和 domain-name ,此处 10.0.11.12 写 域名应该也可以(最好测试一下,我暂时没时间测试。)

 

tftp 的路径:
/var/lib/tftpboot/
/etc/xinetd.d/tftp

1.先把/etc/xinetd.d/tftp  里面的 disable 配置改成 no,这样xinetd启动的时候会起来 tftp
2.看下 /var/lib/tftpboot/ 目录下需要什么文件:
pxelinux.0
boot.msg
splash.lss

centos_6.3_x64
centos_6.3_x64/vmlinuz
centos_6.3_x64/initrd.img

pxelinux.cfg
pxelinux.cfg/default

解释:

1). pxelinux.0  是bootloader 文件,dhcp会指导client来拿到这个文件.

2). pxelinux.cfg/default  这是 tftp 最主要的配置文件,client端会根据这个配置来最终拿到ks 文件,这里的ks写的是域名,因为我们在DHCP里面配置了domain-name-serves 和 domain-name,因此可以解析域名的,用域名还有个好处是可以做负载均衡。

典型的 default 文件内容如下:
default centos_6.3_x64_raw_clean
prompt 1
timeout 600
display boot.msg

label local
localboot 0

label centos_6.3_x64_raw_clean
kernel centos_6.3_x64/vmlinuz
append netmask=255.255.255.0 ksdevice=em2 initrd=centos_6.3_x64/initrd.img nofb text ks=http://pxe.hy01.nosa.me/ks/centos_6.3_x64_raw_clean.cfg

label centos_6.3_x64_kvm_host
kernel centos_6.3_x64/vmlinuz
append netmask=255.255.255.0 ksdevice=em2 initrd=centos_6.3_x64/initrd.img nofb text ks=http://pxe.hy01.nosa.me/ks/centos_6.3_x64_kvm_host.cfg

3). boot.msg  安装时候显示的文本界面,在default里面定义
boot.msg 如下:

splash.lss

– case: centos_6.3_x64_raw_clean         ip=10.0.10.*
– case: centos_6.3_x64_kvm_host          ip=10.0.10.*

4). splash.lss  是安装时候的显示图片,不重要。

5). centos_6.3_x64目录   内核相关文件,用于client端 建立内核环境,ISO镜像里面有这两个文件,直接拷过来即可;定义在default文件中。

装机端加载好内核环境之后,会从 ks 指定的链接获取 ks 配置文件,比如 http://pxe.hy01.nosa.me/ks/centos_6.3_x64_raw_clean.cfg ,ks 会指导怎么格式化硬盘、密码、语言、防火墙等等;此时需要一个http server ,我们用 nginx .

 

nginx 的配置很简单, 只要让上面的ks链接能正常获取就可以了,这里不介绍配置,来看一下ks 的配置文件的格式把。

# Kickstart for NC net install
# 2011-04-27 Cecil.Han Merge from Daniel version
##################################################
# All alternative parts I add [Optional] mark
##################################################
#Modified by NingningLi on 2012/09/10

# Do not try to probe the monitor
#monitor –noprobe

# This cd is for platform=x86, AMD64, or Intel EM64T

# System authorization information
auth  –useshadow  –enablemd5

# System bootloader configuration
bootloader –location=mbr

# Clear the Master Boot Record
zerombr

# Partition clearing information
clearpart –all –initlabel

# Use text mode install
text

# Firewall configuration
#firewall –enabled –port=22:tcp
firewall –disabled

# System keyboard
keyboard us

# System language
lang en_US

# Installation logging level
logging –level=info

# Use Net Install installation
#cdrom
url –url http://pxe.hy01.nosa.me/iso/centos_6.3_x64

# Network information
#network –bootproto=static

# Root password
rootpw –iscrypted $1$rCxxxr.wrewrW6234234234K/

# SELinux configuration
selinux –disabled

# Do not configure the X Window System
skipx

# System timezone
timezone  –utc Asia/Shanghai

# continue to install if unsupported hardware
unsupported_hardware

# Install OS instead of upgrade
install

#reboot after installation
reboot

# Disk partitioning information
%include /tmp/partconfig

%pre –interpreter /bin/sh
export PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin

DRIVER_INSTALL=”`fdisk -l | grep -i ‘^Disk /dev/’ | awk ‘{print $2, $3}’ | sed ‘s/://g’ | sed ‘s#/dev/##g’ | awk ‘BEGIN{disk=””; size=0}{if(size == 0 || size > $2) {size = $2; disk = $1}}END{print disk}’`”

echo “””part /boot –fstype=”ext3” –size 512 –ondisk=$DRIVER_INSTALL
part swap –size 4096 –ondisk=$DRIVER_INSTALL
part pv.01 –size=1 –grow –ondisk=$DRIVER_INSTALL
volgroup domovg pv.01
logvol / –vgname=domovg –fstype=”ext4″ –size=18432 –name=root
logvol /home –vgname=domovg –fstype=”ext4″ –size=1024 –name=home””” > /tmp/partconfig

# Disk partitioning cfg backup
#part /boot –fstype=”ext3″ –size 512 –ondisk=sda
#part swap –size 4096 –ondisk=sda
#part pv.01 –size=1 –grow –ondisk=sda
##part pv.01 –size=20480 –ondisk=sda
#volgroup domovg pv.01
#logvol / –vgname=domovg –fstype=”ext4″ –size=1024 –name=root
#logvol /usr –vgname=domovg –fstype=”ext4″ –size=2048 –name=usr
#logvol /var –vgname=domovg –fstype=”ext4″ –size=2048 –name=var
#logvol /home –vgname=domovg –fstype=”ext4″ –size=1024 –name=home
#logvol /opt –vgname=domovg –fstype=”ext4″ –size=1024 –name=opt
#logvol /tmp –vgname=domovg –fstype=”ext4″ –size=3072 –name=tmp

# you can check the Description of each rpm packages in cdrom:/script/RPMINFO
%packages –nobase

# Kernel

# System
basesystem
centos-release
#centos-release-notes
filesystem
initscripts
setup
SysVinit

# Lib & Module
dhcp-common
glibc
libgcc
libstdc++
#libtermcap
lockdev
m2crypto
#nss_ldap
#pam_ccreds
pam_passwdqc
pam_pkcs11
readline

# Tools
authconfig
bc
bind-utils
bzip2
coreutils
cpio
crontabs
dmidecode
dmraid
dstat
e2fsprogs
eject
file
ftp
gpm
grub
hdparm
info
iproute
iptables
iputils
links
logrotate
logwatch
irqbalance
lsof
mailx
make
man
mcelog
mdadm
minicom
#mkinitrd
mlocate
nc
ntp
nscd
openldap-clients
openssh-clients
openssh-server
passwd
patch
patchutils
pciutils
procmail
procps
psacct
rpm
rsync
screen
sendmail
shadow-utils
smartmontools
strace
sudo
symlinks
sysstat
tcpdump
telnet
#termcap
compat-libtermcap
traceroute
unzip
util-linux
vim-common
vim-enhanced
vim-minimal
vixie-cron
wget
which
yum

# extra
ctags
glib2
glib2-devel
libdbi
libicu
libnfnetlink
lrzsz
pkgconfig

# Shell
bash

# unused packages
-postfix
-mysql-libs
-ecryptfs-utils
-cryptsetup-luks
-dhclient
-dhcpv6_client
-ed
-kudzu
-libhugetlbfs
-rootfiles
-pm-utils
-selinux-policy-targeted
-setools
-setserial
-sysfsutils
-system-config-network-tui
-pam_pkcs11
-*firmware*
-b43-openfwwf

# unused 32 bit distribution
# Need to test, I’m not sure whether we can use *
#-*.i386
#-*.i686
-audit-libs.i386
-cracklib.i386
-cyrus-sasl-lib.i386
-db4.i386
-device-mapper.i386
-e2fsprogs-libs.i386
-gpm.i386
-keyutils-libs.i386
-krb5-libs.i386
-libgcc.i386
-libselinux.i386
-libsepol.i386
-libstdc++.i386
-libtermcap.i386
-lockdev.i386
-mkinitrd.i386
-nss_ldap.i386
-openldap.i386
-pam.i386
-pam_ccreds.i386
-pam_passwdqc.i386
-readline.i386
-zlib.i386

# Post work

# copy the scripts from cd to disk before chroot to the new installed os
%post

/etc/init.d/sshd restart

script_url=”http://pxe.hy01.nosa.me/script
wget ${script_url}/post_install.sh &>/dev/null
sh -x post_install.sh raw_clean &>/dev/null

%include /tmp/partconfig 部分是硬盘的格式化配置,可能需要注意下;url 部分是 iso的地址,这里也用域名,最好做负载均衡,因为各种RPM安装包都是从这里获取的;在post阶段执行一段初始化脚本。

其他参数意义不一一说明了,可以看下面的链接。

https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html

 

用DDNS管理ILO IP

如果我们不在机房,怎么控制机器装机呢,可以使用控制卡,这时如果我们使用DDNS 可以省去手动配置控制卡 IP的麻烦,只要插上网线就可以自动获取,大大减少工作量;而且控制卡发出DHCP请求的时候会带上SN,so 根据SN就可以解析到控制卡 IP 。

安装:
yum -y install dhcp bind

dhcp的配置 /etc/dhcp/dhcpd.conf :

ddns-update-style interim;
#ddns-update-style none;
ignore client-updates;
default-lease-time 69120000;
max-lease-time 86400000;
option time-offset -18000;
option domain-name “ilo.nosa.me“;
option domain-name-servers 10.2.1.1;

subnet 10.2.0.0 netmask 255.255.0.0 {
    range dynamic-bootp 10.2.1.11 10.2.255.254;
    option broadcast-address 10.2.255.255;
    option routers 10.2.1.1;
}

key ilo {
    algorithm hmac-md5;
    secret HqX9xaJ75tgQ1S8hHz9L7Q==;
}
zone ilo.nosa.me. {
    primary 10.2.1.1;
    key ilo;
}
zone 2.10.in-addr.arpa. {
    primary 10.2.1.1;
    key ilo;
}

bind 的配置文件 /etc/named.conf  :

options {
    directory   “/var/named”;
    dump-file   “/var/named/data/cache_dump.db”;
    statistics-file “/var/named/data/named_stats.txt”;
    memstatistics-file “/var/named/data/named_mem_stats.txt”;
    allow-transfer { none; };
    recursion yes;

};

logging {
    channel default_debug {
        file “data/named.run” size 20M;
        severity info;
        print-time true;
    };
};

zone “.” IN {
    type hint;
    file “named.ca“;
};

key ilo {
    algorithm hmac-md5;
    secret HqX9xaJ75tgQ1S8hHz9L7Q==;
};

zone “ilo.nosa.me.” IN {
    type master;
    file “named.ilo.nosa.me“;
    allow-update {key ilo;};
};

zone “2.10.in-addr.arpa.” IN {
    type master;
    file “named.2.10.in-addr.arpa“;
    allow-update {key ilo;};
};

#include “/etc/named.rfc1912.zones”;

仅供参考,具体的DDNS配置请查资料。