OS설치 전 서버 설정 배포방법
A. 소개
- 목적
OS설치 전 단계에서 서버의 설정 값(BIOS, RAID, ILO등)을 배포하는 방법을 설명합니다.
- 준비사항
PXE 설치 환경이 구성된 서버 (pxe서버의 구성방법은 포함되어 있지 않습니다.)
NFS 서버 (PXE서버에 함께 구성 가능)
HP Scripting toolkit
Conrep(BIOS), hpssacli(RAID) 설정 파일
HP Scripting toolkit
HP scripting toolkit의 Booting이미지에는 대부분의 HP Utility가 포함되어 있습니다.
해당 이미지의 HP Utility를 이용하여 서버의 설정을 진행합니다.주로 사용되는 Utility
CONREP
HPSSACLI
HPSSASCRIPTING
HPONCFG
RBSURESET
REBOOT
SETBOOTORDER
외에 몇 가지 Utility들이 포함되어 있으며 자세한 내용은 HP Scripting toolkit의 매뉴얼을 참조하시기 바랍니다.
B. 사전 작업
- 부팅이미지 변경
Scripting Toolkit의 압축을 PXE서버의 임의의 디렉토리에 풀어 놓습니다.
필요한 경우 기존 PXE서버의 /tftpboot/의 디렉토리를 백업 합니다.
"Scripting Toolkit directory"/boot_files/내의 하기 파일들을 /tftpboot/디렉토리에 복사합니다.
(BOOTX64.efi, initrd.img, mboot.c32, menu.c32, pxelinux.0, /pxeboot.cfg/default)
백업해 놓은 기존 PXE서버의 부팅이미지(vmlinuz initrd.img) 와 “scripting toolkit”의 압축을 푼 디렉토리를 NFS서비스 할 수 있도록 준비 합니다.
- Default 파일 수정
PXE로 부팅 후 boot menu 수정 및 배포 시 필요한 변수를 설정합니다..
기본 label을 수정하거나 새로 추가하시면 됩니다.
label test
kernel vmlinuz
append initrd=initrd.img root=/dev/ram0 rw ramdisk_size=785116 single console=ttyS0,115200n8 console=tty0 ide=nodma ide=noraid pnpbios=off numa=off network=1 sstk_mount=192.168.1.15:/stk/ sstk_mount_type=nfs sstk_mount_options=ro,nolock sstk_conf=toolkit.conf sstk_script=custom.sh ssstk_mount=on
- 각 주요 변수 설명
sstk_mount= “nfs마운트 시 source 경로 입력”
sstk_mount_type= “마운트 타입 nfs”
sstk_mount_options=”마운트 시 사용될 옵션”
sstk_conf=”toolkit 환경 파일”
sstk_script=”부팅 후 자동으로 실행될 스크립트 파일명-custom.sh만을 사용”
ssstk_mount=”마운트 스크립트사용여부 체크- 마운트를 사용하지 않을 경우 변수삭제”
해당 매뉴얼은 raid설정부터 OS설치까지 한 번에 진행되도록 구성되어 있습니다.
하기 내용에 설명될 BIOS,RAID설정등을 캡쳐를 진행하려면, Default파일의 “bash” label을 이용하여 Prompt로 부팅 후 HP-Utility들을 사용하면 됩니다.
C. 배포 실시
- 부팅 순서.
POST
PXE (DHCP)
tftpboot 이미지 load
bootstrap.sh 실행
해당 스크립트는 부트이미지에 포함되어있어 수정할 수 없습니다.
주요역할은 환경변수 설정, nfs마운트 및 필요파일 복사, custom.sh파일 실행입니다.
- custom.sh 실행
nfs 디렉토리 마운트 설정 conrep을 이용한 BIOS설정 적용 hpssascripting 을 이용한 RAID설정 적용 기존 pxe 부팅을 위한 “pxe 부팅이미지” 적용. Kickstart파일을 이용한 OS설치 시작
- custom.sh
custom.sh 샘플 스크립트
#!/bin/bash
##this script installs linux##SAMPLE. Change the mount points to match your environment
PROFILE_DIR=192.168.1.15:/stk
PROFILE_TYPE=nfs
test -n "$sstk_mount_options" && PROFILE_OPTS="-o $sstk_mount_options"Internal Variables, do not modify
export TOOLKIT=/TOOLKIT
export PROFILE_MNT=/mnt/main
#export HWDISC_FILE=/TOOLKIT/hpdiscovery.xml
#export SERVERNAME=/DL380 Gen9
#export BOOTDEVNODE=/dev/sdaclear
echo "*** Performing linux installation ***"##nfs mount
echo "Mounting Storage ${PROFILE_DIR}"
#mkdir -p ${PROFILE_MNT}
mount -t ${PROFILE_TYPE} ${PROFILE_DIR} ${PROFILE_MNT} ${PROFILE_OPTS}
if [ $? != 0 ]; then
echo "Unable to mount ${PROFILE_DIR}, make sure you updated the $0 script with the location of your server."
exec /bin/bash
fiecho "Configure server"
##specific config file
CONREPDAT=${PROFILE_MNT}/data_files/dl380g9_conrep.dat
HPACUDAT=${PROFILE_MNT}/data_files/hpssascripting.dat##CONTINUE COMMON INSTALL PROCESS
if [ -f "$CONREPDAT" ] ; then
echo "Apply System Configuration"
./conrep -l -f${CONREPDAT}
fiif [ -f "$HPACUDAT" ] ; then
echo "Applying Array Configuration"
hpssascripting -i ${HPACUDAT}
ficd ${TOOLKIT}
sleep 5echo "### Linux Unattended Install using Kickstart ###"
cd /root
#Next block of commands fetches the kernel and inital ramdisk from the installation media
#you can fetch it using a variety of methods, we are using wget in this exampleecho "Get the CentOS kernel and initrd image"
rm -f vmlinuz initrd.imgcp -a ${PROFILE_MNT}/centos_img/vmlinuz /root/
cp –a ${PROFILE_MNT}/centos_img/initrd.img /root/kexec -l vmlinuz --initrd=initrd.img --append="ksdevice=eth0 ide=nodma ide=noraid pnpbios=off ks=nfs:192.168.1.15:/ks/ks65.cfg"
sync
umount ${PROFILE_MNT}#unmount everything else
#umount -a#unload drivers to prevent potential problems
#lsmod | awk '{print $1}' | xargs rmmod#wait a few seconds for good measure
sleep 10echo "Calling kexec"
kexec -eecho "YOU SHOULD NEVER SEE THIS"
- 수정 값 상세 내용
PROFILE_DIR=192.168.1.15:/stk //nfs서버 마운트 소스 경로.
PROFILE_TYPE=nfs //마운트 타입 –nfs
CONREPDAT=${PROFILE_MNT}/data_files/dl380g9_conrep.dat
//BIOS설정 파일인 conrep 파일 지정 – 자세한 설정내용은 “conrep”섹션 참고
HPACUDAT=${PROFILE_MNT}/data_files/hpssascripting.dat
//RAID설정 파일인 hpssascripting 파일 지정 – 자세한 설정내용은 “hpssascripting”섹션 참고
cp –a ${PROFILE_MNT}/centos_img/initrd.img /root/
cp – a ${PROFILE_MNT}/centos_img/vmlinuz /root/
//준비된 기존 PXE서버의 부팅이미지를 mount된 nfs서버 디렉토리로 부터 /root 디렉토리로 복사합니다.
kexec -l vmlinuz --initrd=initrd.img --append="ksdevice=eth0 ide=nodma ide=noraid pnpbios=off ks=nfs:192.168.1.15:/ks/ks65.cfg"
//kexec를 사용하여 기존 pxe서버의 부팅이미지를 로드 합니다.
//”ksdevice=” 내용에 OS배포를 위한 network device를 선택합니다
//”ks=” 내용에 kicstart의 파일을 지정해 줍니다.
예제에는 없지만 hponcfg를 이용하여 ilo online 설정을 할 수 있습니다.
자세한 내용은 HP Scripting toolkit의 매뉴얼을 참조(57page)하시기 바랍니다.
- Conrep
Conrep은 BIOS의 설정내용을 캡쳐 또는 적용하는 유틸리티 입니다.
캡쳐방법
원하는 서버의BIOS설정을한 서버에서 실행(캡쳐) 합니다.
conrep –s –f ./DL360G7_VM_BIOS.dat
-s 옵션은 bios 설정을 저장하는 옵션입니다.
-f 옵션은 파일이 저장될 위치와 파일명을 정합니다. (예: ./DL360G7_BIOS.dat)
-s 옵션에서 -f옵션을 사용하지 않을 경우 기본 파일명은 conrep.dat 입니다.
또는 캡쳐된 설정파일(xml형식)의 수정도 가능합니다.
서버마다 BIOS값이 다르므로 각 서버별 BIOS설정파일이 필요합니다.
자세한 사용방법은 HP Scripting toolkit의 매뉴얼을 참조(31page)하시기 바랍니다.
- Hpssascripting
HP Smart Array의 RAID구성을 위한 유틸리티입니다.
RIAD가 구성되어있는 서버에서 설정내용을 캡쳐 하거나 직접 수정이 가능합니다
샘플파일 raid10_disk2
Action = Configure
Method = Custom
Controller = ALL;Array Specifications
Array = A
Drive = 1I:1:1,1I:1:2
LogicalDrive = 1
RAID = 1
Stripsize = 128
Arrayaccelerator = ENABLE;Array Specifications
Array = B
Drive = 1I:1:3,1I:1:4,1I:1:5,1I:1:6,1I:1:7,1I:1:8,1I:1:9,1I:1:10,1I:1:11,1I:1:12
LogicalDrive = 2
RAID = 1
Stripsize = 128
Arrayaccelerator = ENABLE
- 주요 옵션 상세 설명
Action = Configure //RAID설정을 위한 값입니다. Controller = Slot 0 //컨트롤러 슬롯을 지정합니다. Array = A //첫번째 Array명이며 A,B….순서대로 입력합니다. Drive = 1I:1:1,1I:1:2 //Array에 포함될 드라이브 포트명입니다.(1번,2번디스크) LogicalDrive = 1 //LogicalDrive명이며 1,2,3,4순서대로 입력합니다. RAID = 1 //RAID level을 선택합니다. Stripsize = 128 //stripsie를 지정합니다. Arrayaccelerator = ENABLE //Cache사용여부를 지정합니다.
//LogicalDrive의 Size를 정하지 않으면 Array전체의 용량이 할당됩니다.
Array = B //두번째 Array명입니다. Drive = 1I:1:3,1I:1:4,1I:1:5,1I:1:6,1I:1:7,1I:1:8,1I:1:9,1I:1:10,1I:1:11,1I:1:12
//Array에 포함될 드라이브 포트명입니다. (3~12번 디스크)
LogicalDrive = 2 //LogicalDrive명이며 두번째 드라이브입니다.
RAID = 5 //RAID level입니다.
자세한 사용방법은 HP Scripting toolkit의 매뉴얼을 참조(36page)하시기 바랍니다.
※ 설정완료 후 pxe서버로 대상서버를 네트워크 연결하면 custom.sh스크립트에서 서버설정(bios,raid)을 진행하게 되며, Kickstart파일을 이용하여 OS설치가 진행됩니다.