RHEL 로 100이상의 서버를 작업 할때 아주 편리 합니다.
대량의 서버 OS 설치 할때 이렇게 하는것이 시간 절약 및
유지 보수에 너무 편하네요
아래와 같이 서비스가 올라 갑니다.
xinetd (super deamon)
---------------------------------------------------------------------> tftp 요청이 오면 --------------> /etc/xinetd.d/tftp 참조후
tftp 서비스가 작동 합니다.
/etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps =100 2
flags = IPv4
}
/etc/dhcp/dhcpd.conf
[root@mk1 dhcp]# more dhcpd.conf
allow bootp;
allow booting;
max-lease-time 60;
default-lease-time 60;
ddns-update-style none;
#option domain-name-servers 1.126.63.1, 1.126.63.2;
class "PXE" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 10.1.1.10; # Kick start 서버 ip
filename "pxelinux.0";
}
subnet 10.1.1.0 netmask 255.255.255.0 {
option broadcast-address 10.1.1.255;
# gateway 지정. 외부망 연결이 필요 없다면 없어도 되고
# 만약 라우터의 dhcp 서버가 on 이면 충돌이 나므로 지정하지 않거나
# router의 dhcp server를 off로 하고 지정한다.
# option routers 10.1.1.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.1.1.30 10.1.1.99;
default-lease-time 21600;
max-lease-time 43200;
pool {
allow members of "PXE";
range 10.1.1.200 10.1.1.230; # pxe dhcp ip 영역
}
}
cp /usr/share/syslinux/* /var/lib/tftpboot/
mkdir redhat
mkdir pxelinux.cfg
cp /cdrom/images/pxeboot/* /var/lib/tftpboot/redhat/
CDROM , DVD 의 부팅 이미지 를 tftpboot 로 복사 합니다.
-> 미리 httpd 서비를 만들어 주시고 /var/www/html/RHEL8 에다 복사 하세요
mount -o loop RHEL8.iso /mnt
mkdir /tmp/ISOMNT
cp -avRf /mnt/* /tmp/ISOMNT
/var/lib/tftpboot
/var/lib/tftpboot/pxelinux.0/default
아래와 같이 메뉴를 생성 해준다.
[root@mk1 pxelinux.cfg]# more default
default vesamenu.c32
MENU TITLE BigData KickStart RHEL 7.7
prompt 1
display boot.msg
timeout 300
label linux
menu label ^1) Install or upgrade an existing system
menu default
kernel /redhat/vmlinuz
append initrd=/redhat/initrd.img repo=http://10.1.1.10/RHEL8/
label vesa
menu label ^2) Install system with ^basic video driver
kernel /redhat/vmlinuz
append initrd=/redhat/initrd.img xdriver=vesa nomodeset repo=http://10.1.1.10/RHEL8/
label rescue
menu label ^3) Rescue installed system
kernel /redhat/vmlinuz
append initrd=/redhat/initrd.img rescue repo=http://10.1.1.10/RHEL8/
label local
menu label ^4) Boot from local drive
menu default
localboot 0xffff
ks=http://server.example.com/mydir/ks.cfg
ks=nfs:server.example.com:/mydir/ks.cfg
ks=ftp://server.example.com:/mydir/ks.cfg
ks.cfg
아래 문서는 자기 인스톨 환경에 맞게 설정후 http,ftp,nfs 이런 서비스 에 올려 두고 위와 같이 접근 하시면 됩니다.
(예제)
/var/lib/tftpboot/pxelinux.0/default 문서의 append 부분에 넣어주시고
DELL,HP,Lenovo 벤더에 맞는 Raid Module 들도 끝으로 추가 해주시면 됩니다.
그렇게 해주어야 LocalDisk 에 인스톨을 진행 할 수 있습니다.
[주의]
만약 ks.cfg 로 인스톨 자동화를 진행 하는데
Booting시 Raid Controller를 인식 못할경우 설치 할 수 없거나 인식된 다른 디스크에 설치 될 수 있습니다.
append initrd=/redhat/initrd.img repo=http://10.1.1.10/RHEL8/ ks=http://10.1.1.10/RHEL/KS/ks.cfg
install
## 인스톨 화면을 text 형태로 보여준다.
text
## 설치 방법
url --url http://192.168.0.140/redhat6.5
#cdrom
##redhat subscription 설정
#key --skip은 skip, key 서브스크립션 넘버 등록 옵션 (RHEL 6.x의 경우 이 옵션을 안 넣으면 messages 파일에 warning으로 로깅된다. RHEL 5.x는 설치 도중 멈춰 버린다.)
key --skip
## Lang 세팅
#lang en_US.UTF-8
lang ko_KR.UTF-8
#langsupport ko_KR --default=en_US
#langsupport en_US --default=ko_KR
## 키보드 마우스
keyboard us
#mouse none
## NIC 및 hostname 설정
# --device link 는 link가 살아있는 NIC의 네트워크 스크립트 설정파일에 적용하라는 뜻이다.
# NIC가 여러개인 시스템에 어떤게 eth0 인지 모를때 적용하면 편리하다.
network --device link --bootproto dhcp --noipv6 --hostname Sample-local
## root 비번
rootpw !test123
## 보안 설정
firewall --disabled
selinux --disabled
authconfig --enableshadow --passalgo=sha512
## 시간대
#timezone Asia/Seoul
# 글로벌 서비스를 위한 서버의 경우 UTC를 GMT 기준으로 맞춘다.
timezone --utc Etc/GMT
## bootloader 설정
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
## OS가 설치될 sda disk를 초기화. OS 설치시 OS가 설치될 Disk를 제외한 다른 Disk는 모두 뺄것을 권장한다.
# zerombr과 ignoredisk 옵션이 빠지면 새 disk의 경우 kickstart 도중 disk를 initialaze 하라는게 나와서 자동 진행을 방해한다. HP DL360 장비의 경우 디스크가 레이드컨트롤러 디바이스명인 /dev/cciss 로 잡히
므로 ignoredisk 에서 sda로 하면 kickstart 도중 에러가 발생한다. DL380 부터는 레이드볼륨이 /dev/sda로 잡히므로 괜찮다.
# USB 메모리만 꽂았을 경우 USB 메모리가 지워지는 것을 방지
ignoredisk --only-use=sda
zerombr
#clearpart --initlabel --all
clearpart --all --drives=sda
## Disk 파티셔닝
# UEFI 모드로 설치 시 아래 한 줄 추가. 설치 후 확인하면 vfat 형태의 파일시스템으로 보인다.
#part /boot/efi --fstype=efi --grow --maxsize=200 --size=20
# 참고로 UEFI 모드로 설치가 되면 모든 파티션이 GPT 방식으로 파티셔닝 된다.
part /boot --fstype ext4 --size=309
part pv.01 --size=1 --grow
volgroup rootvg pv.01
logvol swap --fstype swap --vgname=rootvg --size=2048 --name=lv_swap
logvol / --fstype ext4 --vgname=rootvg --size=40960 --name=lv_root
logvol /var --fstype ext4 --vgname=rootvg --size=4096 --name=lv_var
logvol /usr --fstype ext4 --vgname=rootvg --size=4096 --name=lv_usr
logvol /tmp --fstype ext4 --vgname=rootvg --size=1024 --name=lv_tmp
logvol /var/crash --fstype ext4 --vgname=rootvg --size=1024 --name=lv_crash
logvol /home --fstype ext4 --vgname=rootvg --size=2048 --name=lv_home
logvol /app_base --fstype ext4 --vgname=rootvg --size=5120 --name=lv_appbase
logvol /data --fstype ext4 --vgname=rootvg --size=12492 --name=lv_data
## yum reposigory 설정.
# %packages에 여러가지의 패키지가 정의되어 있을 경우 yum repository 서버가 필요할 수 있다. 아래처럼 지정.
repo --name="Red Hat Enterprise Linux" --baseurl=http://192.168.0.140/redhat6.5 --cost=100
#repo --name="Red Hat Enterprise Linux" --baseurl=file:///mnt/source # RHEL 6.x Style
#repo --name="Red Hat Enterprise Linux" --baseurl=cdrom:sr0 --cost=100
## 설치 패키지
%packages
@additional-devel
@base
@client-mgmt-tools
@console-internet
@core
@debugging
@development
@directory-client
@hardware-monitoring
@java-platform
@korean-support
@large-systems
@legacy-unix
@network-file-system-client
@performance
@perl-runtime
@server-platform
@server-platform-devel
@server-policy
libXinerama-devel
xorg-x11-proto-devel
startup-notification-devel
libgnomeui-devel
libbonobo-devel
libXau-devel
libgcrypt-devel
popt-devel
libXrandr-devel
libxslt-devel
libglade2-devel
gnutls-devel
mtools
pax
python-dmidecode
oddjob
sgpio
device-mapper-persistent-data
systemtap-client
jpackage-utils
samba-winbind
certmonger
pam_krb5
krb5-workstation
tcp_wrappers
perl-DBD-SQLite
%end
## 설치 후 전원 off
# 설치가 모든 끝난 시스템은 꺼지도록해서 진행이 모두 끝났음을 쉽게 알아보기 위함이다. kickstart의 맨 마지막 작업으로 kickstart 설정 파일에서의 라인 위치에 상관 없이 마지막에 동작한다.
poweroff
## OS 설치 후 작업
# 미리 만들어 놓은 쉘스크립트 파일을 다운 받아 돌린다.
%post
wget 'http://192.168.0.140/ks/basic_65.sh' --output-document=/root/basic_65.sh
wget 'http://192.168.0.140/ks/firstcheck.sh' --output-document=/root/firstcheck.sh
chmod 755 /root/basic_65.sh
chmod 755 /root/firstcheck.sh
sh /root/basic_65.sh
rm -f /root/basic_65.sh
실제 작동 되는 것을 아래 동영상으로 확인 할 수 있습니다.
끝까지 봐주셔서 감사합니다.
설정시 잘안되거나 문제 발생시 메일 주세요
E-mail : jonglae@gmail.com
빠르게 서버 대량설치 활요하세요