[RHCSA 준비] 킥스타트 서버 구성하기

blog post 


킥스타트는 설치OS가 준비된 킥스타트 서버를 통해 OS가 설치되지 않은 다른 서버에 자동으로 OS를 설치하도록 구성된 OS 자동 설치 시스템 정도로 보면 될 것 같습니다. 본 포스트에서는 간단하게 킥스타트 서버를 사용하는 방법을 소개하도록 하겠습니다.

(IPA 서버가 구성된 서버가 있어야 하며, 이 서버를 구성하는 방법은 추후에 포스팅하도록 하겠습니다)

 

 

네트워크 설치 서버 구성하기

 HTTP서버를 통해 제공되는 디렉토리로 설치에 요구되는 모든 파일들을 복사함으로써 네트워크 설치 서버를 설치합니다. 후에, 가상머신을 통해 설치 테스트 합니다.

 

1. 서버에서 리눅스 설치 DVD설치 마운트 및, 마운트된 경로 확인

 

2. 서버에서 설치 폴더 생성 

# mkdir /www/docs/account.example.com/install

 

3. 리눅스 설치 DVD에 있는 모든 파일을 install 폴더로 복사

# cp -R * /www/docs/account.example.com/install

 

4.  기존의 server1 아파치 서버의 구성파일에서 옵션 추가

# vim /etc/httpd/conf.d/account.example.com

--> 옵션추가: Options Indexes

 

* 참고: 위 옵션을 넣어도 아래 메시지를 출력하며 파일 리스트가 안보일 있음

->"You don't have permission to access /install/ on this server"

   

    install 디렉토리의 권한을 바꿔주면

 

-> # chmod -R 755 /www/docs/account.example.com/install

 

5. 아파치 재시작

# systemctl restart httpd

 

6. DVD 설치 콘텐츠 확인 (파일 및 디렉토리 목록이 안보이면 설정이 제대로 안된 것)

# elinks http://account.example.com/install

 

7. 네트워크 인스톨을 하기 위한 클라이언트 준비

   (저의 경우, 테스트를 위해 Virtual Machine Manager에서 새로운 Centos7 생성했습니다)

 

8. 설치 과정에서 어떻게 설치를 진행할지 방법을 요구하는데 여기에서 Network install 선택

 

9. 서버 URL 입력: http://account.example.com/install

 

10. 설치가 진행되면 정상적으로 킥스타터 서버 구성을 완료했다고 보면 된다.

 

 

 

PXE 부팅을 위한 TFTP 서버 구성하기

 

1. tftp 서비스 활성화

# yum -y install tftp-server xinetd 

# vim /etc/xinetd.d/tftp                                      : disable 파라미터를 yes -> no 적용

# systemctl start xinetd                                      : xinetd 시작

# systemctl enable xinetd

# firewall-cmd --permanent --add-service=tftp        : firewall에서 tftp 허가

# firewall-cmd --reload                                       : firewalld 구성 적용

 

2. dhcp 설정

# yum -y install dhcp

# vim /etc/dhcpd.conf 아래 내용 추가

 

           

           subnet 192.168.0.0 netmask 255.255.255.0 {

        option routers 192.168.0.1 ;

        range 192.168.0.20 192.168.0.50 ;

#       next-server 192.168.1.70;               

        filename "pxelinux/pxelinux.0";

}

 

 

3. Centos 설치 디스크에서 Packages 디렉토리에 있는 syslinux<version>.rpm 복사해서 /tmp 넣는다.

 

4. 거기에서 pxelinux.0 파일이 추출될 건데, 그건 PXE부팅 환경을 구성하기 위한 기본 파일이다. RPM 추출하기 위해 /tmp 가서 rpm2cpio syslinux<version>.rpm | cpio -idmv 파일을 추출한다.

 

  • 참고: 이부분에서 쉬운 방법으로 절차를 진행할 있다. 그냥 syslinux package 설치하고 후에 설명했던 위치로 파일을 복사하면 된다.

 

 

5. 파일 복사

# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux/

 

6. # mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg

 

7. 6번에서 만든 디렉토리에 default라는 이름으로 파일을 만들고, 안에 아래 내용을 넣는다.

 

default Linux

prompt 1

timeout 10

display boot.msg

label Linux

menu label ^Install RHEL

menu default

kernel vmlinuz

append initrd=initrd.img

 

 

 


8. # cp /boot/grub/splash.xpm.gz /var/lib/tftpboot/pxelinux/

 

9. centos7 설치파일에 있는 images/pxeboot 디렉토리에서 vmlinuz initrd.img파일을 찾을 있다. 파일을 /var/lib/tftpboot/pxelinux/ 디렉토리에 복사한다.

 

10. # systemctl restart dhcpd xinetd

 

11. 로그 확인

     # tail -f /var/log/massages

 

11. 로그확인으로 로그 메시지는 로드한 채로, 클라이언트 가상머신 설치 단계의 부팅 메뉴에서 PXE boot 선택합니다. 이제 PXE 부팅이 시작하고 아까 준비했던 이미지 설치를 로드하는걸 있으면 정상적으로 pxe 서버까지 구성된 것입니다.

 

* 참고: 만약  설치를 계속하고 싶다면, 프로그램 설치 과정에서 미디어 설치를 포함한 미디어의 종류를 요구할 , URL 선택합니다. 그러고나서 위에서 설정했던 http://account.example.com/install 만들었던 서버 설치 이미지로 URL 입력힙니다.

 

* 추가사항: 방화벽 설정

firewall-cmd --permanent --add-service=dhcp

firewall-cmd --permanent --add-service=tftp

firewall-cmd --permanent --add-service=http

firewall-cmd --reload

 

* 위 처럼 서비스를 방화벽에서 풀어주지 않으면 vm에서 읽는 과정에서 에러나서 설치를 못하는 것으로 보입니다

* 만약 PXE 메뉴를 추가하고 싶다면, 사용자가 선택할 있는 타임아웃 시간을 아래와 같이 증가시키면 됩니다. /var/lib/tftpboot/pxelinux/pxelinux.cfg/default 에서 아래에서는 600으로 설정되어 있습니다.

 

default Linux

prompt 1

timeout 600

display boot.msg

label Linux

menu label ^Install RHEL

menu default

kernel vmlinuz

append initrd=initrd.img

label Rescue

menu label ^Rescue system

kernel vmlinuz

append initrd=initrd.img rescue

label Local

menu label Boot from ^local drive

localboot 0xffff

 

 

kickstart 파일을 사용하여 가상머신 네트워크 설치 진행하기

네트워크 설치 서버는 20.1에서 만들어졌다. 네트워크 서버는 설치 파일 접근에 사용되며, 킥스타트에 접근하도록 합니다.

 

1. 아나콘다 파일을 아파치 서버 폴더로 복사

     # cp /root/anaconda-ks.cfg  /www/docs/account.example.com/ 디렉토리로 복사한다.

 

2. 권한 설정으로 일반 유저는 못보도록 설정

# chmod 644 /www/docs/account.example.com/anaconda-ks.cfg

 

3. VMManager 시작하고 VM 만들기 시작합니다. 이름을 입력하고 나서 Network Install 선택합니다

 

4. URL 서버 설치 URL 입력: http://account.example.com

 

5. 킥스타트 아나콘다 파일 URL 입력: http://account.example.com/anaconda-ks.cfg

 

6. 이후 기본 옵션으로 설정하고 설치를 시작합니다. 초기 메시지에서 "Retrieving anaconda-ks.cfg" 메시지를 있습니다. 메시지가 사라지면 에러 메시지가 보이지 않을것이며, 킥스타트 파일이 올바르게 로드 됩니다.

 

7. 킥스타트 파일이 로드된 후에 설치를 중단합니다. 가상머신을 위한 킥스타트파일이 만들어지지 않았기 때문에, 이후에 많은 요구사항들을 요구하게 것입니다.

( 연습의 목적은 실제 킥스타트 파일이 동작하는가를 보여주는 것이 목적입니다.)

설치를 멈춘 후에, 킥스타트 파일을 VMManager 구성에서 제거합니다.

 

참고:

  • 설치 과정도 자동화 하기 위해 system-config-kickstart 라는 그래픽 인터페이스 툴을 사용할 수 있습니다. 다른 툴들도 여럿 있습니다. 인터페이스는 논리 볼륨을 설정할 없기때문에, 수동으로 설정해야 합니다.

(이 방법에 대해서는 다른 포스트에서 정리할 예정)

 

  • 네트워크 옵션을 통해 NIS, LDAP, Kerberos 같은 인증 설정이 가능하나, 이를 지정하지 않으면 기본적으로 /etc/passwd 통해 인증하게 됩니다.

 

  • 설치 자동화를 자세하게 구성하고 싶다면, anaconda-ks.cfg 파일을 수정하면 됩니다.


 


TAGS.

Comments