Metal as a Service MAASを使ってPoC環境のOSインストールを自動化

# はじめに

Metal as a Service MAASは物理サーバをクラウドインスタンスの様に簡単にデプロイ・リリースできるソフトウエアです。MAASサーバはPXEブートで物理サーバを構築・管理します。PXEブートにより、OSインストーラーの起動、自動インストールを実現しています。

一度環境を構築すると以下の様なダッシュボードだけで、物理サーバにOSをインストールできます。PoC環境でありがちな、違う検証に使うためOS再インストールする作業を自動化できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/de524d79-08d1-0860-5271-584e3eeef953.png)

本記事では弊社PoC環境での導入例を元に、MAASについて最低限のセットアップとOSインストールに触れていきます。

# 実施環境

MAASサーバはDHCPを使用するため、物理サーバとL2で接続する必要があります。しかし、PoC環境のラックには新しいサーバしかなく、どれか1台にOSを手動で入れMAASサーバとする必要がありました。
PoC用のサーバに他のソフトウエアは極力入れたくなかったため、MAASサーバは自社内のプライベートクラウドで構築することにしました。自社内のプライベートクラウドでVLANを払い出し、PoC環境ラックと接続しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/17937d43-23e6-1b25-777e-5f98ee262630.png)


# 手順

1. MAASのインストール
1. DHCPの設定
1. 物理サーバのPXE設定
1. 試運転
1. OSのインストール

## MAASのインストール

[公式ドキュメント](https://maas.io/docs/how-to-do-a-fresh-install-of-maas
)を参考にMAASサーバの構築を進めます。

MAASのリポジトリを追加し、aptでインストールを行うだけで構築できます。MAASの設定は構築後のWEB UIで行います。

```bash
sudo apt-add-repository ppa:maas/3.3-next
sudo apt update
sudo apt-get -y install maas
```

WEB UIにアクセスするための管理ユーザを作成します。以下のコマンドを実行すると対話形式でユーザを作成できます。

```
sudo maas createadmin --username=admin --email=admin@example.com
```

以下にブラウザでアクセスするとWEB UIが表示されます。

```
http://MAASサーバ:5240/
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/adc19dd3-539f-8291-0a38-fbeb8f1b6a9d.png)

ログイン後、登録したユーザの設定画面を開き、SSH鍵を登録します。後程、OSをインストール際はここで登録したSSH鍵でアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/d5b63b24-b0ee-0751-667e-5a8a21964c1c.png)




## DHCPの設定

PEXブートを行うために、MAASサーバでDHCP機能を有効にします。WEB UIで設定を行います。

[Subnet]を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/749a09a9-bd89-96c8-12d7-5e4bef5e5227.png)

DHCPを有効にするVLAN(PoC環境のVLAN) を選択し、Configure DHCPを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/6ac7b7b0-ff39-5ff5-54a3-b08883833495.png)

MAAS provides DHCPを有効にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/93afbfbe-9395-5828-ca54-93ebf7cc6823.png)

これでMAASサーバのDHCPが有効になり、物理サーバがPXEブートできるようになりました。

## 物理サーバのPXE設定

PXEブートの設定は各機器のBIOS設定で行うため、それぞれのドキュメントを参照してください。
設定が必要な項目は以下の通りです。

1. PXEブートに使用するNICのPXE有効化
1. ブート順位でPXEブート(ネットワークブート)を最上位に設定する

PoC環境ではDELLサーバを用いていたため、iDRAC(BMC)上での設定例を以下に掲載します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/6aa2c2e4-6ea0-05d6-a4c0-799fd42b7049.png)

## 試運転

MAASサーバの構築が完了し、物理サーバのPXEブートの設定も完了したため、物理サーバを再起動します。
再起動すると、物理サーバはPXEブートでMAASの試運転OSを起動します。この試運転OSは主に以下の処理を実施します。

1. 物理サーバのリソースを分析
    - CPU、メモリ、ストレージ構成、ネットワークインターフェース情報
1. 簡易なテスト
    - ストレージやメモリなどのハードウエアテスト
    - インターネットへの疎通テスト
3. 分析・テスト結果をMAASサーバへ送信
4. シャットダウン

試運転が無事完了すると、物理サーバはシャットダウンされ、WEB UIに登録されます。以下の様に、基本的なハードウエア情報を確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/3315eb85-fbfd-47c7-7577-eb43a04fdaf9.png)


## OSのインストール

登録された物理サーバのページ上部にあるTake ActionボタンからDeployを選択します。OSの選択を行います。この時、NetworkタブでNICに手動でIPを設定することも可能です。この情報はMAASサーバに保存され、OS再インストールを行う際も同じIPで構築できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3324111/eb398d3e-08f8-b73d-d577-8a8e593891e7.png)

OSインストールが完了するとDeployステータスになり、IPアドレスが表示されます。このIPアドレスにMAAS設定時に登録したSSH鍵を使ってSSHができます。



# おわりに

今回は、PoC環境の性質上、OSのインストールが何度も想定されるためMAASを導入しました。設定後はWEB UIからOSをインストール＆再インストールでき、PoC検証の効率化ができました。
　購入した物理サーバはDell社のiDRACライセンスが有効のため、手間ですがリモートコンソールを利用し遠隔でのOSインストールは可能です。一方で、リモートコンソールを持たないサーバは、モニターとキーボードを刺し現地操作の必要がありますが、MAASを一度設定してしまえばすべて不要になります。よってリモートコンソールの有無に関わらず、MAASを利用しない理由はありません。

本記事では、最低限のセットアップとOSインストールについて触れました。MAASをさらに活用していくため、今後触れていく内容を最後にご紹介します。

### MAASコンポーネントの理解

MAASはDHCP、DNS、リポジトリミラーなどを提供しています。これはMAASに限らず、物理サーバを運用する際に必須なライフサーバと呼ばれるものです。よりMAASを活用していく際には提供されている機能の理解が必要です。

### 自作イメージの作成

今回は公式が提供しているUbuntu22を利用しましたが、VMWare ESXI, Windows, 他のLinuxディストリビューションなどを利用する事もできます。公式のイメージビルダーはUbuntuの有料版ライセンスが必要ですが、Packerなど無料のソフトウエアでも実現できます。

### MAAS CLIとAPI

今回はWEBダッシュボードで操作を行いましたが、他にもCLI、APIが提供されています。これにより、OSインストール後の処理まで自動化することが可能です。自社環境に合わせて開発しても良いですが、MAAS開発チームのCanonicalが[juju](https://juju.is/docs/olm/maas)というソフトウエアも提供しています。

# 参考

- MAAS | Metal as a Service - https://maas.io/ - Canonical Ltd. - 2023/5/11
- Juju | How to use MAAS with Juju - https://juju.is/docs/olm/maas - Canonical Ltd. - 2023/5/11