LoginSignup
0
3

More than 5 years have passed since last update.

【CentOS】kickstart サーバの構築

Posted at

VirtualBOX上のCentOS7 にkickstartサーバを作る。

下記の環境に作成していきたいと思います:v:

[root@server ~]# uname -a
Linux server 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@server ~]#

Kickstartサーバには下記サービスを稼働させる必要があります。

  • tftp
  • dhcp
  • httpd
  • syslinux

起動の流れとしては下記。

  1. OSインストール対象マシンをPXE(Pre eXecition Environment) で起動。
  2. DHCP サーバから
    • IP アドレス
    • ブートローダのファイル名 を取得する。
  3. TFTP サーバから
    • ブートローダファイル(pxelinux.0)を取得する。
  4. ブートローダ(pxelinux.0)でブート
  5. TFTP サーバから起動する方法が書かれた pxelinux.cfg/default を取得する。
  6. pxelinux.cfg/default に書かれている方法で起動する。

ということでまずはyumにてインストールしていきます。

[root@server ~]# yum install tftp-server dhcp httpd syslinux
====================================================================================================================================
 Package                        アーキテクチャー          バージョン                                  リポジトリー             容量
====================================================================================================================================
インストール中:
 dhcp                           x86_64                    12:4.2.5-68.el7.centos.1                    base                    513 k
 syslinux                       x86_64                    4.05-15.el7                                 base                    990 k
 tftp-server                    x86_64                    5.2-22.el7                                  base                     47 k
更新します:
 httpd                          x86_64                    2.4.6-88.el7.centos                         base                    2.7 M
依存性関連でのインストールをします:
 mtools                         x86_64                    4.0.18-5.el7                                base                    203 k
依存性関連での更新をします:
 dhclient                       x86_64                    12:4.2.5-68.el7.centos.1                    base                    284 k
 dhcp-common                    x86_64                    12:4.2.5-68.el7.centos.1                    base                    175 k
 dhcp-libs                      x86_64                    12:4.2.5-68.el7.centos.1                    base                    131 k
 httpd-tools                    x86_64                    2.4.6-88.el7.centos                         base                     90 k

トランザクションの要約
====================================================================================================================================
インストール  3 パッケージ (+1 個の依存関係のパッケージ)
更新          1 パッケージ (+4 個の依存関係のパッケージ)

総ダウンロード容量: 5.1 M
Is this ok [y/d/N]: y

syslinux とはLinuxカーネルを起動するためのブートローダです。
このブートローダをtftpにて配布可能な場所へコピーします。

[root@server syslinux]# mkdir /var/lib/tftpboot/pxelinux
[root@server syslinux]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux/

次にpxelinux設定ファイルディレクトリを作成します。

[root@server syslinux]# mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg
[root@server syslinux]# mkdir /var/www/html/ks

次にインストールに必要なrpmを httpd の公開ディレクトリへコピーします。
VirtualBox にてインストールiso をコントローラIDEへマウントしておく。

[root@server html]# mount /dev/cdrom /mnt/cdrom
[root@server html]# mkdir /var/www/html/RHEL7
[root@server html]# cp -a /mnt/cdrom/* ./RHEL7/
[root@server html]# cd RHEL7/
[root@server RHEL7]# ls
CentOS_BuildTag  EULA  LiveOS    RPM-GPG-KEY-CentOS-7          TRANS.TBL  isolinux
EFI              GPL   Packages  RPM-GPG-KEY-CentOS-Testing-7  images     repodata
[root@server RHEL7]# umount /mnt/cdrom

今コピーしたファイルの中にインストーラ起動用のカーネル、初期RAMディスクについてTFTP公開用ディレクトリへもコピーする。


[root@server pxeboot]# cp /var/www/html/CENTOS7/images/pxeboot/vmlinuz /var/lib/tftpboot/pxelinux/CENTOS7/
[root@server pxeboot]# cp /var/www/html/CENTOS7/images/pxeboot/initrd.img /var/lib/tftpboot/pxelinux/CENTOS7/

次にDHCPサーバの設定
/etc/dhcp/dhcp.conf に下記のように設定を入れる。

subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.200 192.168.0.205;
        class "pxeclients" {
                match if substring (option vendor-class-dentifier, 0, 9) = "PXEClient";
                next-server 192.168.0.1;
                filename "pxelinux/pxelinux.0";
        }
}

中身について詳しい解説は割愛。
次にブートストラップイメージのメニュー設定
/var/lib/tftpboot/pxelinux/boot.msg

-------------------------
Welcome to Kickstart Install!!!
-------------------------
1. CentOS 7 - preconfigured
2. CentOS 7

複数OSを入れる場合は、メニュー番号が増えていくかんじ。
今回は
1.は設定済の構成で自動インストール
2.はインストール画面にて対話的に設定。

次にこのメニュー番号に対応したPXE起動用の設定を入れる。
/var/lib/tftpboot/pxelinux/pxelinux.cfg/default

prompt 1
display boot.msg

label 1
kernel /CENTOS7/vmlinuz
append initrd=/CENTOS7/initrd.img ks=http://192.168.0.1/ks/ks_1.cfg

label 2
kernel /CENTOS7/vmlinuz
append initrd=/CENTOS7/initrd.img ks=http://192.168.0.1/ks/ks_2.cfg

起動用の設定をラベルごとに分けて、ks_*.cfg の設定ファイルを参照させる。
ここまで来たらTFTPサーバ、DHCPサーバ、HTTPDサーバを立ち上げておく。

次のファイアウォールの設定
http,tftp,dhcpのサービスを開放する。
私の環境では、インストール先サーバのセグメントは internalゾーンに所属しているので、--zone=internal としている。

[root@server pxelinux.cfg]# firewall-cmd --zone=internal --add-service=http
success
[root@server pxelinux.cfg]# firewall-cmd --zone=internal --add-service=tftp
success
[root@server pxelinux.cfg]# firewall-cmd --zone=internal --add-service=dhcp
success
[root@server pxelinux.cfg]# firewall-cmd --zone=internal --add-service=http --permanent
success
[root@server pxelinux.cfg]# firewall-cmd --zone=internal --add-service=tftp --permanent
success
[root@server pxelinux.cfg]# firewall-cmd --zone=internal --add-service=dhcp --permanent
success

次にキックスタートファイルを作成する。
REDHATのkickstart generator を使いたいところだが、ライセンスがいるものらしいので、割愛。
先ほどブートメニューの作成にて、自動構成用のメニューも作ったが、こちらは generator を使えないので、
対話インストール用のみ作成する。

/var/www/html/ks/ks_1.cfg,ks_2.cfg

url --url=http://192.168.0.1/CENTOS7

これだけです。

インストール対象サーバの起動

今回はVirtual Box に作成しているので、Kick Start サーバと同じセグメントに新規サーバを起動させる。

virtuakbox.png
ネットワークは、「内部ネットワーク」intnet

システムのメインメモリは1024MB ではなぜかPXEブート中に容量が足りないと怒られたので、4096MB にて起動したところ成功した。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3