3. OS이야기/ 01. Administration

Kickstart를 이용하여 Linux 설치하기

OSSW(Open Source System SoftWare 2014. 5. 26. 16:15

[Kickstart를 왜 사용하나?]

 

서버관리자는 동일한 설정을 갖는 Linux 서버들을 여러대 설치해야 할 때가 있다.같은 작업의 반복이다 보니 관리자 입장에서는 시간 낭비가 될 수도 있고, 여러 대 동일한 설정을 반복하면서 실수가 생길 위험도 있다.

이런 경우 Kickstart를 이용하여 Linux를 설치하게 되면 Kickstart 파일에 입력된 설정내용을 읽어와 자동으로 설치하게 되므로 시간도 줄이고 실수 방지도 할 수 있다.또한, 동일한 서버가 아니더라도 언제든 anaconda-ks.cfg의 설정 내용만 변경하면 다른 설정의 서버 설치가 가능하므로 설치과정이 간편해 진다.

 

 

- Kickstart 파일은 다음과 같은 내용들을 포함한다.

  • Command section: 설치 옵션들과 관련된 값들
  • %packages section: 설치할 패키지들을 정의
  • %pre and %post sections: 설치 전과 설치 후에 필요한 script 내용 

 

[Kickstart 파일 예문]

 

#vi ks.cfg

## Command section ##

lang en_US.UTF-8

keyboard us

network --onboot yes --device eth0 --bootproto static --ip 192.168.10.32 --netmask 255.255.255.0 --gateway 192.168.10.1 --noipv6 --hostname ktdsoss.example.com

timezone Asia/Seoul

rootpw --iscrypted $1$ZnvxIpZh$EEIkRO636WjqR6uLqQz/k.

reboot

 

#text

install

url --url http://ksrepo.example.com/example/ks.cfg

 

#System bootloader configuration

bootloader --location=mbr

 

#Partition clearing information

clearpart --all --drives=sda

part /boot --fstype ext3 --size=100 --ondisk=sda

part pv.2 --size=0 --grow --ondisk=sda

volgroup VolGroup00 --pesize=32768 pv.2

logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=256 --grow --maxsize=512

logvol /tmp --fstype ext3 --name=LogVol02 --vgname=VolGroup00 --size=512

logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

 

 

#System authorization infomation

auth --useshadow --enablemd5

network --bootproto=dhcp --device=eth0

firewall --disabled

selinux --disabled

 

 

## %packages section ##

%packages --resolvedeps

@base-x

@editors

@korean-support

vim-enhanced

lynx

 

 

## %post sections ##

%post

ADMIN_SERVER="example.xxx.co.kr"

 

#!/bin/bash

echo "change service level"

for target in `ls /etc/init.d/ /etc/xinetd.d/ | \

egrep -v "/etc/init.d|/etc/xinetd.d" | \

egrep -v "rpmsave|rpmnew" | \

egrep -v 'auth|functions|halt|killall|single'`

do

/sbin/chkconfig --level 345 $target off

done

SERVICE="crond irqbalance network ntpd sendmail sshd syslog xinetd yum"

/sbin/chkconfig --level 345 auth off

for service_target in $SERVICE

do

/sbin/chkconfig --level 345 $service_target on

done

 

# ssh auto login"

echo "nameserver 168.126.63.1" > /etc/resolv.conf

cd /root

mkdir .ssh

cd .ssh

wget http://$ADMIN_SERVER/example/authorized_keys

chmod 600 authorized_keys

 

#/bin/rm -f /etc/yum.repos.d/CentOS-*

 

#cd /etc/yum.repos.d

 

#wget -O /etc/yum.repos.d/example.repo http://$ADMIN_SERVER/example/example.repo

mkdir -p /var/cfengine/inputs

wget -O /var/cfengine/inputs/update.conf http://$ADMIN_SERVER/example/update.conf

rpm -ivh http://$ADMIN_SERVER/example/4.4/i386/RPMS/cfengine-2.1.21-2.i686.rpm

/bin/grep "id:5" /etc/inittab && /bin/sed 's/id:5/id:3/' /etc/inittab > $$ && \

/bin/mv -f $$ /etc/inittab && \

echo "runleve 3 change!"

touch /var/log/btmp

 

 

[Kickstart 파일 이용하여 설치하기]

 

CD-ROM 부팅 후 부팅 화면에서 ESC누르면 boot prompt가 뜨는데, 아래와 같이 실행한다.

설치방법 및 설치파일위치에 따라 설정값이 달라진다.

 

boot: linux ks=http://ksrepo.example.com/example/ks.cfg

boot: linux ks=nfs:192.10.2:/home/ktdsoss/iso/ks.cfg

 

 

Written by 김소령