MAAS 3.6 を使って Rocky Linux 8.x をプロビジョニングする方法
Metal as a Service (MAAS) × Rocky Linux 8 実践ガイド
はじめに
Canonical MAAS は、データセンター規模のベアメタル自動プロビジョニングを実現する強力なツールです。
Ubuntu だけでなく、Rocky Linux などの RHEL 系ディストリビューションも MAAS 3.3 以降で正式サポートされるようになりました。[1]
本記事では、MAAS 3.6 を使って Rocky Linux 8.x をプロビジョニングする手順をまとめます。
1. MAAS で Rocky Linux が動く仕組み
■ MAAS が Rocky Linux を扱うためのポイント
- Rocky Linux 用の OS イメージは、Canonical が提供する Packer テンプレートで生成できる。
→packer-maasリポジトリにrocky8/が含まれている。[1] - MAAS 3.3 以降で、Rocky Linux 用の Curtin 22.1 がサポートされている。
→ それ以前はdistro.pyパッチが必要だった。[1]
MAAS 3.6 はもちろんこの条件を満たしています。
2. Rocky Linux 8 の MAAS イメージを準備する
公式の packer-maas を使うことで、MAAS 互換の Rocky 8 イメージ(.tar.gz)を生成できます。
テンプレートと workflow は以下を参照:[2]
rocky8.pkr.hcl- Kickstart テンプレート(
rocky8.ks.pkrtpl.hcl) - QEMU / Packer / cloud-image-utils を使用する構成
■ 2.1 ビルドに必要な環境(抜粋)
(公式記述より)[1]
- Ubuntu 22.04 以上
- KVM が使える環境
- Packer v1.11 以上
- 追加パッケージ
qemu-utilslibnbd-binnbdkitfuse2fscloud-image-utilsovmf
■ 2.2 Packer で Rocky8 イメージを生成
packer-maas/rocky8/ で:
cd packer-maas/rocky8 packer init . PACKER_LOG=1 packer build .
Packer は以下を実施します:[2]
- Rocky8 の ISO をダウンロード
- QEMU VM を作成
- Kickstart を使った自動インストール
- MAAS 互換の tarball に後処理
実行後、以下のような成果物が得られます:
rocky8.tar.gz
これを MAAS に登録すれば Rocky Linux 8 が利用可能になります。
3. MAAS に Rocky Linux イメージを登録する
生成した rocky8.tar.gz を MAAS の OS イメージストアにアップロードします。
例(CLI):
maas $PROFILE boot-resources create name="custom/rocky8" \ title="Rocky Linux 8" \ architecture="amd64/generic" \ filetype="tgz" \ content=rocky8.tar.gz
※ $PROFILE は MAAS CLI login 時に作成したプロファイル名。
アップロード後、MAAS UI の Images の一覧に Rocky 8 が表示されます。
4. MAAS で Rocky 8 をプロビジョニング
MAAS 側で Rocky Linux イメージが登録されたら、あとは通常の Ubuntu と同じ流れです。
■ 4.1 マシンを登録
UI または CLI で追加します(公式手順)。[3]
CLI の例:
maas $PROFILE machines create \ architecture=amd64 \ mac_addresses=$MAC \ power_type=$POWER_TYPE \ power_parameters_power_id=$POWER_ID \ power_parameters_power_address=$ADDR \ power_parameters_power_pass=$PASS
■ 4.2 OS の選択とデプロイ
UI では:
- Machines → 対象ノードを選択
- 「Deploy」ボタン
- OS として Rocky Linux 8 を選択
- ホスト名等を入力し実行
MAAS は PXE ブートから Curtin を用いて Rocky8 のインストールを自動実行します。
5. Cloud-init を用いた初期設定
Rocky Linux 8 の cloud-init は標準の cloud-init とほぼ同じ仕様。
Rocky Linux 公式でも cloud-init の充実したドキュメントが用意されています。[4]
MAAS で cloud-init の User-Data を与えることで、
- 初期ユーザ作成
- SSH キー配置
- パッケージインストール
- ネットワーク設定
などが自動化できます。
例(MAAS での User-Data):
#cloud-config users: - name: rockyadmin sudo: "ALL=(ALL) NOPASSWD:ALL" groups: wheel ssh_authorized_keys: - ssh-rsa AAAAB3...
packages: - git - htop
Cloud-init は MAAS 起動後に実行されるため、Rocky 8 でも問題なく動作します。
6. Rocky Linux 8 を MAAS で扱う際の注意点
■ 6.1 Curtin のバージョン
Rocky Linux のインストールには Curtin 22.1 以上が必要です(MAAS 3.3+ で標準)。[1]
■ 6.2 Kickstart ベースのインストール
Ubuntu と異なり、RHEL 系は Kickstart に依存するため、必要に応じて rocky.ks をカスタマイズします。[1]
■ 6.3 Cloud-Init のカスタム
Rocky Linux 特有の cloud-init 設定はほぼ無いが、Rocky Linux 公式ドキュメントが非常に参考になります。[4]
まとめ
MAAS 3.6 を用いることで、Rocky Linux 8.x を含む RHEL 系 OS もベアメタルへ自動展開できるようになります。
本記事で扱ったポイントは:
- MAAS 3.3 以降は Rocky Linux をサポート
- Rocky 8 のイメージは Packer で簡単に生成可能
- MAAS に tarball を登録すれば通常の OS と同様に PXE でデプロイ可能
- Cloud-init で Rocky8 の初期設定も問題なく可能
オンプレ環境での統合 OS 管理の幅が大きく広がります。
References