ヒマしてるなら自動化とかやれよオラと脅されたのでcobblerで物理サーバ自動インストール環境作った。新品サーバの電源ボタンをポチっとしたらインストールと設定をやってくれるというイメージ。
今回の環境はKVMゲスト(CentOS7)上にCobblerをサーバを立て、同じネットワーク内に物理サーバをPXEブートでネットワークインストール可能にする。
#Cobblerのインストール
インストールにあたってはepelのリポジトリ追加が必要
$ yum install epel-release
$ yum install cobbler
#SELinuxの停止
面倒なので停止してしまう。
$ getenforce
$ setenforce 0
$ getenforce
$ vi /etc/sysconfig/selinux
SELINUX=disabled
#ファイアウォール停止
面倒なので停止してしまう。
$ systemctl stop firewalld
$ systemctl disable firewalld
#Cobbler WEBUIのインストール
コマンドのみ使用するので不要。インストールしない。
#cobbler設定ファイル編集
$ vi /etc/cobbler/settings
manage_dhcp: 1
manage_dns: 1
manage_tftpd: 1
restart_dhcp: 1
restart_dns: 1
pxe_just_once: 1
next_server:<サーバーの IP アドレス>
server:<サーバーの IP アドレス>
#内部DNSサーバ設定
Cobblerサーバ上に内部DNSを設けるためdnsmasqを用いる。
DHCP機能は使わず、DNS機能だけにする。digも使うのでbind-utilsも指定。
$ yum install dnsmasq bind-utils
今回の場合自身がDNSなのでローカルアドレスを指定。外部はこの場合公用のDNSで対応
$ vi /etc/resolv.conf
nameserver 127.0.0.1
nameserver 8.8.8.8
dnsmasqはhostsを利用する為必要ホストを追加
$ vi /etc/hosts
172.27.0.66 ansjenk ansjenk.hoge.com
172.27.0.67 lrepo lrepo.hoge.com
172.27.0.68 gitlab gitlab.hoge.com
172.27.0.69 cobbler cobbler.hoge.com
#問合せ元クライアント設定
$ vi /etc/resolv.conf
nameserver 172.27.0.69 #内部DNSサーバのアドレス
nameserver 127.0.0.1 #問い合わせ元クライアントのローカルのアドレス
options timeout 3 attempts 5
#dnsmasqの設定
###設定変更
$ vi /etc/dnsmasq.conf
## 以下をコメントアウト
#domain-needed
#bogus-priv
## DHCPはdhcpdを使用するので無効にする
no-dhcp-interface=eth0
no-dhcp-interface=eth1
###dnsmasq有効
$ systemctl start dnsmasq.service
#dhcpdのインストール設定
###dhcpインストール
$ yum install dhcp
Cobblerが自動で ISC DHCP の設定も書き換えてくれる。必須の設定。
$ cobbler setting edit --name manage_dhcp --value 1
cobblerにDNSサーバのアドレスを設定する
$ cobbler setting edit --name next_server --value 172.27.0.69
$ vi /etc/cobbler/dhcp.template
subnet 172.27.0.0 netmask 255.255.255.0 { ※NWアドレスとマスク値を決定
#option routers 192.168.120.254; ※ルータのアドレスを入れる。この場合無いのでコメントアウトする
option domain-name-servers 172.27.0.69,8.8.8.8; ※内部DNSとして作ったdnsmasqサーバのアドレスと外部DNSのアドレスをカンマ区切りで
option subnet-mask 255.255.255.0; ※上記のマスク値?
range dynamic-bootp 172.27.0.250 172.27.0.253; ※DHCPでリースするアドレスの範囲
default-lease-time 600; ※リース時間が長すぎるので短く
max-lease-time 600; ※リース時間が長すぎるので短く
group以降全てコメントアウト
#サービスを有効にする
PXEブート時に使用するブートローダファイルを取得
$ cobbler get-loaders
TFTPサーバ設定
cobblerの設定を有効化
$ cobbler sync
TFTPを有効
$ systemctl start xinetd
起動時に有効になるように設定変更
$ systemctl enable cobblerd httpd dhcpd
#OSイメージの取り込み(distro設定)
$ yum install wget
$ wget http://ftp.iij.ad.jp/pub/linux/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1503-01.iso
※URLは例
$ mount CentOS-7-x86_64-Everything-1503-01.iso /mnt
$ cobbler import --name CentOS-7-x86_64-Everything-1503-01 --path /mnt
$ umount /mnt
$ cobbler distro list
取り込んだOSイメージのアップデートリポジトリなど登録しておく
$ cobbler repo add --name CentOS-7-updates --mirror http://ftp.iij.ad.jp/pub/linux/centos/7.0.1406/updates/x86_64
$ cobbler repo add --name CentOS-7-extras --mirror http://ftp.iij.ad.jp/pub/linux/centos/7.0.1406/extras/x86_64
$ cobbler repo add --name epel7 --mirror http://ftp.iij.ad.jp/pub/linux/fedora/epel/7/x86_64
$ cobbler reposync
取り込んだOSインストール詳細設定(profile設定)
##kickstartファイルのテンプレートをコピー
$ cp /var/lib/cobbler/kickstarts/sample_end.ks /var/lib/cobbler/kickstarts/CentOS-7.ks
##kickstartファイルの編集
$ vi /var/lib/cobbler/kickstarts/CentOS-7.ks
以下のように変更
auth sha512
keyboard jp106
timezone Asia/Tokyo
%packagesと%endの間に個別でインストールさせたいPKGを記入
ここでは特に実施しない
$ cobbler profile list
#インストールする対象の個別設定1(system設定)
##「default」のsystemを定義
$ cobbler system add --name default --profile CentOS-7-Everything-1503-01-x86_64
##cobblerのsystem定義を変更したので有効化する
$ cobbler sync
##インストール対象機の確認
・BIOSでインストール対象のブートシーケンスでPXEBootが最初に来ていること
・BIOSでインストール対象のMACアドレスを確認し控えておくこと
#インストールする対象の個別設定2(system設定)
既存のsystemがあれば削除して再作成する。無ければ無視。
$ cobbler system remove --name="host-test01"
作成したprofileを指定してsystemを作成
$ cobbler system add --name="host-test01" --profile CentOS-7-Everything-1503-01-x86_64
systemに要素を追加していく。eth0について設定を追加する。
$ cobbler system edit --name="host-test01" --interface=eth0 --mac="$mac0" --static=0
systemに要素を追加していく。eth1について設定を追加する。
$ cobbler system edit --name="host-test01" --interface=eth1 --mac="$mac1" --static 1 --ip-address 172.27.0.XX --subnet 255.255.255.0
設定有効化及び確認
$ cobbler list
$ cobbler sync
$ cobbler list
$ cobbler report
$ cobbler check
#ネットワークインストール開始
###電源を投入。DHCPサーバによってIPが配布
ポチッとな。キター!
###インストールイメージを選択
IP確定後cobbler画面からインストールイメージを選択
ここで選択できるインストールイメージはcobblerでインポートしたもの
「local」は機器のローカルディスクを指す
ハードウェアチェックやkickstartファイルなどのチェックをパスすれば
インストールが開始される
インストール完了。コンソールログイン画面が表示される。
#注記
以下は個人的な備忘録。信用性は高くないので注意。随時更新します。
- koanは一度インストールされているクライアントに対して再インストールするもの?なので今回は導入しない
- 仮想マシンの自動生成にはkoanを使う