MaaSのコンセプトと用語

# はじめに

MAASは、UbuntuのCanonicalが提供している、OSのデプロイ等のツールです。 
OSは、Ubuntu、CentOS、Windows Serverやその他Linuxが可能です。 
ネットワーク内の新規マシンを自動的に発見し、登録や設定をしてくれます。 

MaaSには、様々な用語とコンセプトが存在しています。
以下のURLにまとめられているので、それらを理解するために自分訳を残します (理解に誤りがある場合はご指摘頂ければ幸いです)

https://docs.maas.io/2.4/en/intro-concepts

https://docs.maas.io/2.4/en/nodes-comp-hw



# Nodes

Nodesは一般的な用語で、いくつかの具体的な物を指しています。
Nodesはライフサイクル(追加、試験、割り当て、Deploy)をMaaSによって管理されています。
NodesはNodesPoolに戻るか、破棄されます。
Nodesには以下のものが含まれています

- Controllers
- Machines
- Devices



# Controllers

Controllersには2個のTypeが存在しています。

- a region controller
- a rack controller



region controller は、オペレータの要求を処理します。
regionは一般的にはデータセンターといった範囲を管理し、複数の rack controllerを配下に持ちます。
rack controller を配下に持つことで、高帯域な Deployサービスを提供します。

region controller には以下のものが含まれています

- REST API Server
- PostgreSQL
- DNS
- caching HTTP proxy
- web UI



region contoller は、データセンターや単体のリージョンを管理するものと考えることが出来ます。
また、MaaSでは、複数の fabrics を使用して、データセンター内のフロアーといったまとまりを管理することが出来ます。



rack controlelrには以下のものが含まれています

- DHCP
- TFTP
- HTTP (for マシンイメージ)
- power management



1個の rack controllerは、fabricに所属しています。
名前にあるとおり、rack controller は、データセンターのラックを管理することです。
rack controllerはパフォーマンスのためにキャッシュが存在しています。
例えば、OSのInstall Imageなどです。



region controllerも、rack controllerもスケールアウトやHA化が可能です。



# Machines

machineはnodeです。MaaSによってDeployされます。



# Devices

deviceはDeployされないnodeです。Deviceは routerを追跡するために使用されます。
例えば、devieには、IPアドレスとDNS名を割り当てることが出来ます。

また、Devicesには parent node を割り当てることが出来、parent node が削除やリリースされたときに、自動的に Devices を削除することが出来ます (関連付けられているIPアドレス予約と共に)

これは、Virtual Machine や コンテナを基に考えられており、ホスト側が削除やリリースされたときに、自動的にVMやコンテナに紐づくDeviceを削除する活用方法があります。



# Composable hardware

Composable hardware は、haedware resourcesのプール (Disk, Memory, Core) を使用して、動的にHWを構成するアーキテクチャです。

詳細は、以下URL

https://docs.maas.io/2.4/en/nodes-comp-hw



# Pods

Pods or Composable Hardware は、NodeのHWリソースを動的な構成とすることが出来ます (Disk, Memory, Core
Machineの事前構成を必要なしに動的に構成することをRequestすることが出来ます。

モデリングツール (例えばJujuなど) は MaaSへMachneを要求するときにこの機能を利用することが出来ます。
MaaS内から直接RequestしてMachineを自動構成することも出来ます

MaaSは現在以下の2個のアーキテクチャをサポートしています

- Intel Rack Scale Design (RSD)
- Virsh (KVM)



Memo : MaaSは、Intel RSD referense software release v 1.2.5 でのみ検証を行っています。このsoftwareは、Redfish APU v 1.0 と、 RSD PODM API v.1.0 が使用されています。



イメージとして、以下の mass コマンドで Pods から自動構成する内容となっています

```
maas $PROFILE pod compose $POD_ID \
    cores=40 cpu_speed=2000 memory=7812 architecture="amd64/generic"
```

memo : GPUの有無は選択出来無さそう？

https://docs.maas.io/2.4/en/manage-cli-comp-hw



# Zone (Availability Zone)

physical zone, or zone は、nodeが所属する組織単位です。zone と node は、1対多の関係です。
zoneからnodeを割り当てることが出来ます。
zoneの使用用途は様々な用途がありますが、主な用途は「可用性」「リソースのパフォーマンス」「電源管理」があります。



- 可用性：複数のZoneに分けてDeployすることで、可用性を上げることが出来ます
- リソースのパフォーマンス：早いマシン、遅いマシンといったZoneを定義することで、使用するZoneを使い分けることが出来ます
- 電源管理：電源を多く消費するサーバを別々のZoneにする使い分けをすることが出来ます



MaaSは新規インストールすると、default zoneを自動作成します。新たなzoneを作成しない場合は、すべてのnodeは default zone に所属します。
従って、Zoneを活用する必要がなければ、Zoneの概念を無視してMaaSを使用することが出来ます。

'default' zone は削除・名前の変更を実施することは出来ません



# Regions

Regionはzoneの1レベル上の組織単位です。Regionには全てのZoneに存在する稼働中のMachineが含まれています。
留意点として、PostgreSQLデータベースに1個のRegisonの全てのMachieのstate 情報が含まれています。



# Series

Seriesは基本的にOSのバージョンです。Ubuntuでは、SeriesにHWE kernes が含まれています。
実際には、MaaSでMachineをDeployするときに Series を使用して OSイメージが紐づけられてDeployされます。
SeriesはMaaS管理者によって選択されます。



# Images

iamgeはMaaSのMachine Provisioning に使用されます。imageは、Seriesで選択されたOSバージョンのものがMaaSへImport されます。





# Fabrics

fabric は VLANの名前空間 (区分け)として使用されます。
1個 or 複数の Switchを使用して、同一のVLANを提供する際に MaaS上にNW構成を定義するものとなります。
defaultのfabric 'fabric-X' はMaaSをInstallしたときに検出した各 Subnet ごとに作成されます。



# Spaces

Spaceは subnet が相互に通信できる VLAN の論理グループです。各Space内のVLANは同じ fabric に所属する必要はありません。MaaSインストール時にdefault の space は作成されません
spaceの主な使用用途はJujuの自動構成で使用されます。



# Tags

tag (VLAN Tagの事では**ありません**) は、 nodeに付与するプロパティ属性です。
nodeのdeploymentの際にノードを識別する目的で活用することが出来ます。



# IP ranges

SubnetのconfigでIPアドレス群(range)を予約することが出来ます。
rangesは2個のTypeが存在します

- Reserved range
  subnetが管理されているか居ないかによって動作が異なります

  - Managed (subnet) : MaaSはこのIPアドレスの範囲を使用しません (MaaS以外の様々な用途で使用することが出来ます。OpenStackのテナントNW, 外部DHCPなど)
  - Unmanaged (subnet) : MaaSはこのIPアドレスの範囲の使用します

- Reserved dynamic range
  - Nodeの状態がenlisting(登録中)、commissining(試験中)、及び試運転中のDHCPに使用されるIPアドレスの範囲です。Defaultの IP range は DHCPを有効にする WebUI の操作で作成されます。Unmanaged iprange で指定している範囲と重複している場合、 Unmanaged range の範囲は Dynamic rangeとして使用されません。