pre-deployment using hpe scripting toolkit

in #hpscriptingtoolkit7 years ago

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/sda

clear
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
fi

echo "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}
fi

if [ -f "$HPACUDAT" ] ; then
echo "Applying Array Configuration"
hpssascripting -i ${HPACUDAT}
fi

cd ${TOOLKIT}
sleep 5

echo "### 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 example

echo "Get the CentOS kernel and initrd image"
rm -f vmlinuz initrd.img

cp -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 10

echo "Calling kexec"
kexec -e

echo "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설치가 진행됩니다.