본문 바로가기
클라우드 아키텍처 설계 기초지식/04 리눅스서버 운영

리눅스 서버 운영 (5) - 무인 원격 설치 서버

by Jasie 2019. 3. 14.

8. 무인 원격 설치 서버


8.1 Kickstart란?

킥스타트란 네트워크 부팅을 통하여 OS를 자동으로 설치하는 설치 방법

이러한 환경을 PXE 또는 PXE 서버라고 함 (Pre-boot eXecution Enviroment)

8.2 구성

PXE 서버 : OS 이미지 및 설치 정보를 전달해줄 서버 NFS, DHCP

TFTP 서버 : 부트 이미지를 전달해줄 서버 TFTP

PXE 클라이언트 : 네트워크 인터페이스가 포함된 시스템

8.3 TFTP

1) 설치

yum install -y tftp tftp-server xinetd

2) 설정

vi /etc/xinetd.d/tftp

disable = no 로 변경

systemctl restart xinetd

3) 확인

/var/lib/tftpboot 에 파일을 생성

다른 위치에서 tftp [서버IP] -c get [생성한 파일 이름]

파일이 다운되면 성공

8.4 DHCP

1) DHCP란?

Dynamic Host Configuration Protocol, 동적으로 IP주소를 할당해주는 프로토콜, DHCP를 이용해서 사용자들에게

동적으로 IP를 임대해주는 서버가 DHCP 서버이다.

2) DHCP 프로토콜

(1) DHCP Discover

메시지 방향: 단말 -> DHCP 서버

브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)

의미: 단말이 DHCP 서버를 찾기 위한 메시지입니다. 그래서 LAN상에(동일 subent상에) 브로드캐스팅을 하여 "거기 혹시 DHCP 서버 있으면 내게 응답 좀 해 주세요~"라고 단말이 외칩니다.

(2) DHCP Offer

메시지 방향: DHCP 서버 -> 단말

브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)이거나 유니캐스트일수 있습니다. 이는 단말이 보낸 DHCP Discover 메시지 내의 Broadcast Flag의 값에 따라 달라지는데, 이 Flag=1이면 DHCP 서버는 DHCP Offer 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 됩니다.

의미: DHCP 서버가 "저 여기 있어요~"라고 응답하는 메시지입니다. 단순히 DHCP 서버의 존재만을 알리지 않고, 단말에 할당할 IP 주소 정보를 포함한 다양한 "네트워크 정보"를 함께 실어서 단말에 전달합니다.

(3) DHCP Request

메시지 방향: 단말 -> DHCP 서버

브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)

의미: 단말은 DHCP 서버(들)의 존재를 알았고, DHCP 서버가 단말에 제공할 네트워크 정보(IP 주소, subnet mask, default gateway등)를 알았습니다. 이제 단말은 DHCP Request 메시지를 통해 하나의 DHCP 서버를 선택하고 해당 서버에게 "단말이 사용할 네트워크 정보"를 요청합니다.

(4) DHCP Ack

메시지 방향: DHCP 서버 -> 단말

브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF) 혹은 유니캐스트일수 있으며 이는 단말이 보낸 DHCP Request 메시지 내의 Broadcast Flag=1이면 DHCP 서버는 DHCP Ack 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 됩니다.

의미: DHCP 절차의 마지막 메시지로, DHCP 서버가 단말에게 "네트워크 정보"를 전달해 주는 메시지입니다. 앞서 설명드린 DHCP Offer의 '네트워크 정보"와 동일한 파라미터가 포함됩니다.

3) DHCP 서버 설치

yum install -y dhcp

3) DHCP 서버 설정

vi /etc/dhcp/dhcpd.conf 파일 수정

subnet 192.168.240.0 netmask 255.255.255.0 {

range 192.168.240.101 192.168.240.199;

option domain-name-servers 8.8.8.8;

option routers 192.168.240.2;

option broadcast-address 192.168.240.255;

default-lease-time 600;

max-lease-time 7200;

}

systemctl restart dhcpd

4) DHCP 서버 확인

다른 시스템에서 dhcp로 IP 할당

8.5 NFS

1) NFS란?

Network File System, 서버의 특정 디렉토리를 클라이언트의 특정 디렉토리와 연결시켜주는 기술

2) 설정

mkdir /share

touch /share/a

vi /etc/exports

/share 192.168.240.*(rw)

systemctl restart nfs

3) 확인

8.6 무인 원격 설치 설정

1) 설치 파일 준비

ISO 이미지 삽입

/run/media/sjb/CentOS 7 x86_64/isolinux에서

initrd.img와 vmlinuz을 복사

yum install syslinux 설치하고

/usr/share/syslinux에서

menu.c32와 pxelinux.0를 복사

2) tftp 설정

vi /etc/xinetd.d/tftp

server_args = -s /tftpboot

mkdir /tftpboot

menu.c32와 pxelinux.0를 복사

mkdir /tftpboot/CentOS7

initrd.img와 vmlinuz을 복사

mkdir /tftpboot/ks

cp /root/anaconda-ks.cfg /tftpboot/ks/ks.cfg

mkdir /tftpboot/pxelinux.cfg

vi default

DEFAULT menu.c32

timeout 100

menu title ### OS Installer Boot Menu ###

LABEL CentOS7

kernel CentOS7/vmlinuz

append ksdevice=link load_ramdisk=1 initrd=CentOS7/initrd.img unsupported_hardware text network ks=nfs:192.168.240.100:/tftpboot/ks/ks.cfg text

3) DHCP 설정

vi /etc/dhcp/dhcpd.conf

allow booting;

allow bootp;

default-lease-time 600;

max-lease-time 7200;

option domain-name-servers 8.8.8.8;

option ip-forwarding false;

option mask-supplier false;

ddns-update-style none;

next-server 192.168.240.100;

filename "pxelinux.0";

subnet 192.168.240.0 netmask 255.255.255.0 {

option routers 192.168.240.2;

range 192.168.240.101 192.168.240.199;

}

4) NFS 설정

cp -r /run/media/sjb/CentOS\ 7\ x86_64/* /iso

vi /etc/exports

/tftpboot/ks 192.168.240.* (ro)

/iso 192.168.240.* (ro)

각 각 공유

5) Kickstart 설정

vi /tftpboot/ks/ks.cfg

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512

# Use CDROM installation media

install

# Use graphical install

text

nfs --server=192.168.240.100 --dir="/iso"

# Run the Setup Agent on first boot

firstboot --enable

ignoredisk --only-use=sda

# Keyboard layouts

keyboard --vckeymap=kr --xlayouts='kr'

# System language

lang ko_KR.UTF-8

# Network information

network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate

network --hostname=localhost.localdomain

# Root password

rootpw --iscrypted $6$3KSzSujoZ4nUIyYR$.mcWCH5rgKH2aWqeuAi02KNGd2iYxcszlyXvpthozU0maaaq5KG5mPjxi1Ti6jOu1/vD/ChvCFFwKYP8.hLW3/

# System services

services --enabled="chronyd"

# System timezone

timezone Asia/Seoul --isUtc

# X Window System configuration information

xconfig --startxonboot

# System bootloader configuration

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda

autopart --type=lvm

# Partition clearing information

clearpart --all --initlabel --drives=sda

%packages

@^gnome-desktop-environment

@base

@core

@desktop-debugging

@dial-up

@directory-client

@fonts

@gnome-desktop

@guest-agents

@guest-desktop-agents

@input-methods

@internet-browser

@java-platform

@multimedia

@network-file-system-client

@networkmanager-submodules

@print-client

@x11

chrony

kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%anaconda

pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty

pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok

pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty

%end









공감() 과 댓글은 필자에게 큰 힘이 됩니다.

잠시 1초만 내주시면 안될까요? ~~


로그인 없이도 가능합니당 



댓글