Cobblerで自動インストール環境を作る

ヒマしてるなら自動化とかやれよオラと脅されたので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が配布

ポチッとな。キター！

![_20151204_103115.JPG](https://qiita-image-store.s3.amazonaws.com/0/57350/c79d640f-6b69-e7fb-3211-3fcb1dc91002.jpeg)

###インストールイメージを選択

IP確定後cobbler画面からインストールイメージを選択
ここで選択できるインストールイメージはcobblerでインポートしたもの
「local」は機器のローカルディスクを指す

![_20151204_104055.JPG](https://qiita-image-store.s3.amazonaws.com/0/57350/00a16a28-c21f-2374-9d74-e564e0fddf3a.jpeg)

ハードウェアチェックやkickstartファイルなどのチェックをパスすれば
インストールが開始される

![_20151204_105106.JPG](https://qiita-image-store.s3.amazonaws.com/0/57350/871fd611-2e2b-040c-d28d-31ed3181efaf.jpeg)

![_20151204_105248.JPG](https://qiita-image-store.s3.amazonaws.com/0/57350/dd03cd29-149f-18d4-3db0-fa2c4686448f.jpeg)

インストール完了。コンソールログイン画面が表示される。

![_20151204_105524.JPG](https://qiita-image-store.s3.amazonaws.com/0/57350/35dcb8bc-9b9c-4c62-8313-3ac09bd5ff43.jpeg)


#注記

以下は個人的な備忘録。信用性は高くないので注意。随時更新します。

- koanは一度インストールされているクライアントに対して再インストールするもの？なので今回は導入しない
- 仮想マシンの自動生成にはkoanを使う
-