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-utils
    • libnbd-bin
    • nbdkit
    • fuse2fs
    • cloud-image-utils
    • ovmf

■ 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 では:

  1. Machines → 対象ノードを選択
  2. 「Deploy」ボタン
  3. OS として Rocky Linux 8 を選択
  4. ホスト名等を入力し実行

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
[1] packer-maas/rocky8/README.md at main - GitHub[2] Rocky Linux Images | canonical/packer-maas | DeepWiki[3] How to provision machines with MAAS - discourse.maas.io[4] 0. cloud-init - Documentation