티스토리 뷰

CentOS 강좌 PART 2. 10 PXE기반의 CentOS 서버 자동 구축 2편


10. KickStart 구성

먼저 kickstart 파일을 구성한다. Kickstart 파일은 기존 운영중이거나, 샘플로 삼을 리눅스 서버에서 copy해서 사용해도 된다.
여기서는 PXE server에 설치된 파일을 그대로 사용한다.

1
2
3
4
5
6
[root@centrepo ~]# touch /var/ftp/pub/centos/centos7.cfg
[root@centrepo ~]# cp /anaconda-ks.cfg /var/ftp/pub/centos/centos7.cfg
[root@centrepo ~]# chmod 755 /var/ftp/pub/centos/centos7.cfg
 
# 현재 시스템에 사용 중인 kickstart 파일을 그대로 활용하고, 일부 수정한다.
# 설치시 클라이언트가 사용하기 때문에 권한 설정을 변경해 준다.
cs

복제된 kickstart 파일을 수정한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[root@centrepo whchoi]# openssl passwd -1 1234Qwer
$1$chjTYEgU$Rkr9yKAqEfhHT78ObeJJp0
 
# kickstart 구성 이전에 해야 할 일이 있다. 이것은 kickstart 파일에 포함될 패스워드이다.
# 암호화로 변경해서 복사해 둔 후 kickstart 설정시 입력한다.
 
[root@centrepo whchoi]# vi /var/ftp/pub/centos/centos7.cfg
 
#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
 
# Use network installation
url --url="ftp://10.72.78.253/pub/centos/“
 
### network 기반 설치로, centos가 이미지가 위치한 경로를 지정해 준다. FTP 디렉토리이다.
 
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us','kr'
# System language
lang en_US.UTF-8 --addsupport=ko_KR.UTF-8
 
## 기존에 사용중인 PXE의 환경을 그대로 수용한다.
 
# Network information
network  --bootproto=dhcp --device=ens192 --activate
network  --hostname=localhost.localdomain
 
## 네트워크 환경설정 부분이다. 가상화 VM으로 ens192를 사용중이다.
 
# Root password
rootpw --iscrypted $1$chjTYEgU$Rkr9yKAqEfhHT78ObeJJp0
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Seoul --isUtc --nontp
user --groups=wheel --name=whchoi --password=$1$chjTYEgU$Rkr9yKAqEfhHT78ObeJJp0/ --iscrypted --gecos=“whchoi"
 
#앞서 선언한 패스워드를 root와 Admin user에게 동일하게 넣어 준다.
# 시간대 설정과 시스템 서비스등을 선언한다.
 
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
 
# 파티션에 대한 정보도 넣어 준다. LVM으로 자동 파티션을 사용한다.
 
%packages
@^minimal
@core
kexec-tools
net-tools
chrony
 
# 추가로 필요한 패키지를 사전에 설치할 수 있다. ISO 파일에 있는 기본 패키지를 필요한 것을 선언한다.
%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
 
cs


11. 주요 서비스 재구동.

이제 모든 구성이 완료됐으므로, 시스템들을 Restart시켜 준다.

1
2
3
4
5
6
[root@centrepo ~]#  systemctl restart dhcpd
[root@centrepo ~]# systemctl restart tftp 
[root@centrepo ~]# systemctl restart xinetd
[root@centrepo ~]# systemctl reenable vsftpd
 
# 주요 서비스들을 재구동 시킨다.
cs


12. VM Template 생성

PXE booting 자동화를 시험하기 위해, vCenter에서 템플릿 하나를 생성한다.




전원을 켜고 시스템을 구동한다.
vCenter Console을 통해서 보면 앞에서 설정한 PXE 환경 설정 라벨이 부팅과 동시에 보인다.
또한 곧바로 TFTP 서버를 통해서 PXE Kernel과 이미지가 로딩되는 것을 확인할 수 있다.



PXE가 부팅되면서 환경설정 파일이 함께 로딩되고, CentOS7 로딩이 된다.



로딩이 완료되면, 실제 CentOS 구성환경 화면을 콘솔을 통해서 확인 할 수 있다.
별도 구성없이 이미 KickStart에서 설정된 것이 모두 백그라운드로 설정되어 화면에 나타난다.



패스워드 설정도 앞서 kickstart에서 구성한 데로 자동 설정되며, 패키지도 자동 설치되는 것을 볼 수 있다.



잠시만 기다리면 모두 자동설치 완료가 된다.



실제 PXE/TFTP/DHCP  서버에서 로그를 확인해 보면 실제 동작 과정을 상세히 지켜 볼 수 있다.
제일 먼저 PXE 를 위한 DHCP가 동작하고,
이후 PXE TFTP를 통해서 PXE kernel, 이미지, 설정 파일등이 로딩되는 것을 확인 할 수 있다.
이후 정상적으로 CentOS가 설치가 시작되면 네트워크 재구성이 일어나므로 다시 DHCP가 동작하는 것이 확인된다.



만약 기업용 버전으로 vCenter 로 설치 구성한다면, vCenter Template에서도 이러한 기능들이 지원되므로 충분히 더 편리하게 구성할 수 있다.

하지만 내부에서 Vagrant, Virtual Box등이나 개인용 가상화등을 사용할 경우, 물리적인 서버 배포 등을 구현할 경우에는 앞서 소개한 PXE/KickStart로 구성하게 되면 편리하게 구성이 가능하며, 이후 패키지는 Ansible/Puppet/Chef 등과 같은 도구로 추가적인 관리가 가능하다.


공지사항