今まではkickstart+chefでCentOSを自動構築していた。grubからkickstart処理を呼び出せるようにして、リモートからの再構築も出来ていた。特に不便はなかったんだけど、せっかくUbuntu移行するのに、同じような環境にするのはちょっとイマイチ。一応、preseedによる構築は試してはみたけど。構成管理にかける労力がバカバカしくもあり、chefの守備範囲をぎりぎりまで小さくしたいという願望もある。そもそもchefもやめるつもりだし。そこで以前から気になっていたMAASを試してみることにした。
最初は当然何が何やらだったが、慣れてくるととてつもなく便利。その慣れもそれほど時間は要さないと思う。まずはMAASサーバを構築するんだけど、1台物理ノードを確保されるのは痛いのでLXD上に準備した。公式のドキュメントにもわざわざLXD上にMAASサーバを構築する方法がまとまっているが、自分の環境では特に悩むこともなく動いてしまったので、あまり参考にしなかった。1台目のUbuntuは手動でもpreseedでも何でもいいので、がんばってインストールして下さい。続いて、interfaceをbridge化する。
cat<<EOF>/etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
bridges:
br0:
dhcp4: no
addresses:
- 192.168.1.10/24
gateway4: 192.168.1.254
nameservers:
addresses:
- 192.168.1.1
- 192.168.1.2
search:
- domain.local
- domain.com
interfaces:
- eno0
parameters:
stp: no
EOF
netplan apply
細かいIPやらsearch domainやらは各々の環境に合わせて修正。bridgeが出来たら、LXDをinitする。
cat<<EOF | lxd init --preseed
config:
core.https_address: '[::]:8443'
core.trust_password: PASSWORD
networks: []
storage_pools:
- config: {}
description: ""
name: default
driver: dir
profiles:
- config:
security.privileged: "true"
description: ""
devices:
eth0:
name: eth0
nictype: bridged
parent: br0
type: nic
root:
path: /
pool: default
type: disk
name: default
EOF
LXDのネットワーク間利用を有効化するためのパスワードを設定する箇所があるので、任意の文字列に変更すること。機能自体がMAASには必須ではないないので、不要なら消してしまっても。これでLXDも準備できたので、MAASサーバ用のコンテナを作成する。指定したIPでコンテナが作成されるのでsshで接続。ホスト名は解決できる前提なので、hostsなりdnsなりで対応。繋がらない場合は、 lxc exec maas bash 等を使って調べる。コンテナにログインできたらmaasをインストールする。WebUIログイン用のアカウントも作成。
lxc launch ubuntu:18.04 maas --config=user.network-config=" ethernets:
eth0:
addresses:
- 192.168.1.20/24
dhcp4: false
gateway4: 192.168.1.254
nameservers:
addresses:
- 192.168.1.1
- 192.168.1.2
search:
- domain.local
- domain.com
version: 2"
ssh maas
apt update
apt install -y maas amtterm wsmancli jq
maas createadmin --username=admin --email=system@domain.com
アカウント作成時にパスワードを求められるので設定しておく。ここまで終わったら、いよいよGUIに移る。CLIも充実しているんだけど、それはまたいずれ。ブラウザ等でWebUIにアクセスしてみる。こんな感じのURLになる。 => http://maas:5240/MAAS/ さきほど作成したadminアカウントでログインすると、セットアップが始まるので必要箇所を埋めて進めていく。とりあえずimageは18.04LTSだけにしました。ssh用の公開鍵を登録したら完了。細かい設定はまた次回にでも。
ちなみにMAASではDNSとDHCPが動いているんだけど、どちらも必須ではない。うちはもともとkickstartで使用していたDHCPサーバがいるんだけど、そのnext-serverをMAASサーバに向けるだけで利用できた。しかし、DHCPで配布したIPの名前解決を自動化したいなら、MAASのDNSとDHCPに頼っておいた方が都合がよい。現時点では冗長性が心許ないんだけど、まあ何とかなりそうではあるのでMAASのDHCPを使うことにした。WebUIのヘッダにあるSubnetsをクリック。表示されたSubnetのUntaggedをクリックして、右上のプルダウンメニューから『Provide DHCP』を選択。
これで準備は整ったので、再構築するサーバをPXE bootにして起動する。放っておくと、対象サーバは電源オフになるんだけど焦らない。私は焦ったけど。WebUIのMachinesを確認すると、新しいサーバが登録されている。サーバのリンクをクリックしてホスト名を修正。ConfigurationタブにてPower typeをManualに変更。もちろんIPMIやらAMTのサーバであれば、それを選択。MAASはIPMIやAMTと組み合わせてこそ真価を発揮するしね。Machinesの一覧画面に戻って、右上のプルダウンメニューからCommissionを選択。再びPXE bootで起動。
しばらく待つとCommission処理が終わるって、サーバのステータスがReadyになる。いまどきのBIOSはBoot overrideの設定が標準的になってきたので、PXEでワンタイムブートするのもそれほど面倒ではないんだけど、油断するとboot sequence 間違いが起きるので注意が必要。IPMIかAMTが欲しくなること請け合い。両者であれば、Commissionを選択するだけで、PXE bootまで実行してくれてReadyに至ってくれる。そしていよいよOSのデプロイを実施する。右上のプルダウンメニューからDeployを選択。そして最後のPXE boot。
対象サーバを起動すると遂にOSのデプロイが始まる。何台かやっていると、わかっていても電源ボタン押し忘れて無駄に時間を浪費してしまったり。。。Boot overrideができないときは、タイミングを見計らってHDD起動に戻さないといけないし。この辺のかったるさがMAASの小気味よさを殺してしまっているので、是非とも電源のリモート管理に対応してみたい。しばらくすると待ちに待ったUbuntuが起動してくる。単純にイメージのコピーになっているせいか、kickstartやpreseedに比べて圧倒的に高速。それでも10分弱くらいはかかるけど。しばらくはMAASのカスタマイズに夢中になりそうだ。