概要
Agamaは、YaSTチームにより開発された最新のLinuxインストーラであり、数十年使用されてきた従来のYaSTツールの後継として位置づけられている。
サービスベースのアーキテクチャを採用し、対話的なインストールと無人インストール (自動インストール) の両方に対応する。
Web UIとコマンドラインインターフェース (CLI)、HTTP APIを提供しており、ユーザはWebブラウザ、CLIツール、JSONプロファイルを通じてインストールプロセスを制御できる。
SLE 16とopenSUSE Leap 16では、YaSTはメンテナンスモードに移行され、Agamaが標準インストーラとして採用された。
YaSTからの移行背景
YaSTは長年にわたり使用されてきたが、複雑なアーキテクチャと技術的負債を抱えていた。
YaSTが抱えていた主な課題は以下の通りである。
- 最新のリッチなUIの構築の難しさ
- SaltやAnsible等のツールとロジックの共有の困難性
- libyuiのような特殊なソリューションへの依存による貢献の障壁
Agamaの設計思想は「再利用性、サードパーティツールとの統合、それを基盤とした高度なUIの構築可能性を提供する」ことである。
YaSTの役割は廃止と共に3つのツールに分割された。
- Agama
- インストーラ (YaSTインストーラの後継)
- Cockpit
- Webベースのシステム管理 (ファイアウォール、ネットワーク、プリンタ等)
- Myrlyn
- パッケージ管理GUI (YaSTソフトウェアモジュールの後継)
技術仕様
アーキテクチャ
Agamaはサービス指向アーキテクチャを採用しており、各機能領域が独立したサービスとして実装されている。
設計の基本原則は以下の通りである。
- サービス指向
- 各機能領域が独立したサービスとして動作し、D-Busを通じて通信する。
- API中心
- 全ての機能がHTTP APIを通じて公開される。
- UI分離
- UIとバックエンドが完全に分離されており、フロントエンドの差し替えが容易である。
バックエンドで使用されている主な技術は以下の通りである。
- ソフトウェア管理
- libzypp
- 製品登録
- SUSE::Connect
- ストレージ
- YaSTストレージスタック
- ネットワーク
- YaSTネットワーク設定スタック
- D-Bus
- 各機能領域が独立したサービスとしてD-Bus通信を行う
- HTTP API
- 統一されたHTTP APIで全機能を公開
技術スタック
Agamaを構成するプログラミング言語の比率は以下の通りである。
| 言語 | 比率 | 用途 |
|---|---|---|
| TypeScript | 32.2% | フロントエンドUI |
| Ruby | 26.1% | YaST統合とサービス実装 |
| Rust | 24.3% | Webサーバー、CLI、D-Bus調整 |
| JavaScript | 13.7% | UI補助 |
| Shell | 2.0% | ユーティリティスクリプト |
| C++ | 0.8% | システム統合 |
対応ディストリビューション
Agamaが対応するディストリビューションとアーキテクチャは以下の通りである。
対応ディストリビューション
- openSUSE Leap 16.0 (SLE 16ベース)
- openSUSE Tumbleweed
- openSUSE Micro OS
- openSUSE Slowroll (実験的)
- SUSE Linux Enterprise Server (SLES) 16.0以降
- SUSE Linux Enterprise Desktop (SLED) 16.0以降
- SUSE Linux Enterprise for SAP applications 16.0以降
対応アーキテクチャ
- x86-64 (v2以降)
- IBM Z (s390x)
- POWER (ppc64le)
Agama 18からi586 (32ビット) のサポートは廃止されている。
主な機能
インタラクティブインストール (Web UI)
Agamaは起動後にWebブラウザからアクセスしてインストールを進めることができる。
アクセス方法は以下の通りである。
- ローカルアクセス
- リモートアクセス (mDNS)
- リモートアクセス (IPアドレス)
通信はSSL/TLSで暗号化されており、左側のナビゲーションサイドバーから各設定領域にアクセスできる。
Agama 19では、概要ページとナビゲーション体験が改善された。
ストレージ設定
ストレージの設定は"簡易設定"と"詳細設定"の2種類から選択できる。
- 簡易設定
- ルートファイルシステムとスワップのみを指定して、詳細は自動的に決定される。
- 詳細設定
- YaSTのExpert Partitionerと同等の細かい設定が可能である。
対応デバイスタイプは以下の通りである。
- 通常ディスク
- リムーバブルディスク
- SDカード
- DASD
- zFCP
- iSCSI
- マルチパス
sort キーワードを使用することで、条件に基づくデバイス選択が可能である。
Agama 19では、既存LVMボリュームグループへのインストールとJSON設定のダウンロード機能が追加された。
ネットワーク設定
有線・無線デバイスの検出と設定に対応している。
設定可能な項目は以下の通りである。
- DHCP自動取得
- 静的IP手動設定
- DNS設定
UIはケーブル接続・断線、WiFiアダプター接続に動的に反応する。
Agama 19では、インターフェース名・MACアドレスでの固定アソシエーションと永続的ネットワーク接続の概念が導入された。
なお、ブリッジやボンディングはUIでは未サポートだが、JSONプロファイルでは設定可能である。
ユーザ管理
インストール時にrootユーザおよび一般ユーザの設定を行うことができる。
設定可能な項目は以下の通りである。
- 非rootユーザアカウント作成
- フルネーム、ログイン名、パスワード
- SSH認証
- rootおよび非rootユーザの複数SSH公開鍵の設定
ソフトウェア選択
- パターンベースによるソフトウェア選択が可能である。
- SLE製品のインストール時に製品登録を行うことができる。
- Agama 19では、独自のソフトウェア管理機能が追加された。
Agama CLIの使用
Agama CLIはコマンドラインからインストールを制御するためのツールである。
コマンド一覧
下表に、主要なコマンドを示す。
| コマンド | 説明 |
|---|---|
agama config show |
現在の設定を表示する |
agama config load profile.json |
JSONプロファイルを読み込む |
agama config load profile.jsonnet |
Jsonnetプロファイルを読み込む |
agama config validate profile.json |
プロファイルの設定を検証する |
agama config edit |
設定をエディタで編集する |
agama probe |
システムプロービングを実行する |
agama install |
インストールを実行する |
agama finish --reboot |
インストール完了後に再起動する |
agama monitor |
インストールをリモート監視する |
agama logs |
ログを表示する |
agama events |
イベントを表示する |
agama questions |
インストール中の質問に対応する |
認証コマンド
リモートアクセス時に使用する認証コマンドは以下の通りである。
# ログイン agama auth login # 認証状態の確認 agama auth show # ログアウト agama auth logout
グローバルオプション
| オプション | 説明 |
|---|---|
--host |
リモートホストを指定する |
--insecure |
SSL証明書の検証をスキップする |
--local |
ローカルオペレーションとして実行する |
自動インストール
Agamaは、JSONプロファイルを使用した無人インストール (自動インストール) に対応している。
プロファイル形式
プロファイルに記述できる主なセクションは以下の通りである。
product- インストールする製品名と登録コード
root- rootユーザのパスワード
user- 一般ユーザの設定
localization- 言語、タイムゾーン、キーボードレイアウト
software- インストールするパターンとパッケージ
storage- ストレージ設定とパーティション構成
network- ネットワーク接続の設定
bootloader- ブートローダの設定
scripts- インストール前後に実行するスクリプト
AutoYaSTとの互換性は一般的には維持されているが、100%の後方互換性は保証されていない。
最小限のプロファイル例
以下に最小限のJSONプロファイルの例を示す。
{
"product": { "name": "Leap" },
"root": { "password": "pass123" },
"localization": { "language": "en_US" }
}
詳細プロファイル例
以下にストレージ、ネットワーク、ユーザ設定を含む詳細なプロファイルの例を示す。
{
"product": {
"name": "SLE",
"registrationCode": "xxxxx"
},
"localization": {
"language": "ja_JP",
"timezone": "Asia/Tokyo",
"keyboard": "jp"
},
"root": { "password": "root_password" },
"user": {
"fullName": "User Name",
"userName": "username",
"password": "user_password",
"autologin": false
},
"network": {
"connections": [{
"interface": "eth0",
"method": "static",
"ip": "192.168.1.100",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1",
"nameServers": ["8.8.8.8", "8.8.4.4"]
}]
},
"storage": {
"devices": [{
"name": "/dev/sda",
"partitions": [
{ "size": "512 MiB", "mount": "/boot/efi", "filesystem": "vfat" },
{ "size": "20 GiB", "mount": "/", "filesystem": "btrfs" },
{ "size": "2 GiB", "mount": "swap", "filesystem": "swap" }
]
}]
},
"software": {
"patterns": ["base", "enhanced_base"],
"packages": ["vim", "git", "curl"]
}
}
Jsonnetによる動的プロファイル
AgamaはJsonnetに対応しており、変数、関数、ハードウェア情報の動的注入が可能である。
JSON Schemaによるプロファイル検証もサポートしている。
以下にJsonnetを使用した動的プロファイルの例を示す。
この例では、最も大容量のディスクを自動検出してインストール先として使用する。
local hw = import "hw.libsonnet";
local largest_disk = hw.get_largest_disk();
local disk_size_gb = hw.get_disk_size_gb(largest_disk);
{
product: { name: "Leap" },
storage: {
devices: [{
name: largest_disk,
partitions: [
{ size: "512 MiB", mount: "/boot/efi", filesystem: "vfat" },
{ size: if disk_size_gb > 100 then "30 GiB" else "15 GiB", mount: "/", filesystem: "btrfs" },
{ size: "2 GiB", mount: "swap", filesystem: "swap" }
]
}]
}
}
自動インストールの実行手順
CLIを使用した自動インストールの基本的な手順は以下の通りである。
# プロファイルの検証 agama config validate profile.json # プロファイルの読み込み agama config load profile.json # インストールの実行 agama install # インストール完了後に再起動 agama finish --reboot
リモートインストール
Agamaはリモートからインストールを操作・監視する機能を提供している。
リモートアクセスによるインストール
リモートブラウザからAgamaのWeb UIにアクセスし、インストールを操作できる。
# リモートからインストールの監視 agama monitor --host 192.168.1.xxx
IPMI報告
Agama 16以降では、IPMI報告機能に対応しており、以下のステータスをBMC (Baseboard Management Controller) に報告できる。
- STARTED: インストール開始
- FINISHED: インストール完了
- FAILED: インストール失敗
Live ISOの使用
Live ISOの起動
Agamaは公式のLive ISOイメージを提供しており、USBメモリまたはDVDに書き込んでブートすることができる。
- 公式Live ISOのダウンロード
起動後は自動的にグラフィカルインターフェースで起動する。
起動オプション
| オプション | 説明 |
|---|---|
live.net_config_tui=1 |
nmtuiを起動してネットワーク設定を行う |
起動要件
- アーキテクチャ: x86-64-v2以降
- 最小RAM: 1GB以上 (推奨)
注意事項
- AutoYaST互換性
- AutoYaSTプロファイルとの互換性は一般的には維持されているが、100%の後方互換性は保証されていない。
- 既存のAutoYaSTプロファイルは移行前にテストすることを推奨する。
- 32ビットサポートの廃止
- Agama 18からi586 (32ビット) アーキテクチャのサポートは廃止されている。
- ネットワーク設定の制限
- ブリッジやボンディングはUIでは設定できない。JSONプロファイルを使用して設定する必要がある。
- SSL証明書
- Agamaはデフォルトで自己署名証明書を使用するため、リモートアクセス時にブラウザの警告が表示される場合がある。
--insecureオプションを使用することにより、CLI経由での接続時に証明書の検証をスキップできる。
参考リンク
- Agama公式サイト
- Agamaダウンロード
- Agamaドキュメント
- Agama CLIリファレンス
- Agamaストレージ設定ガイド
- Agamaブログ
- Agama GitHubリポジトリ
- SLE 16ドキュメント
- 設定 - Cockpit
- インストール - Myrlyn