'다수의 서버 설치'에 해당되는 글 1건

  1. 2021.01.09 RHEL PXE Kickstarter Network Setup(많은 서버 한번에 설치) 8
카테고리 없음2021. 1. 9. 18:23
반응형

RHEL 로 100이상의 서버를 작업 할때 아주 편리 합니다.

대량의 서버 OS 설치 할때 이렇게 하는것이 시간 절약 및

유지 보수에 너무 편하네요

아래와 같이 서비스가 올라 갑니다.

 

pxe kickstarter

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

빠르게 서버 대량설치 활요하세요

 

 

 

 

 

 

 

 

반응형
Posted by Dream Come True