PSUnraid — UnraidをPowerShellで操作する実験的モジュール
概要
PSUnraidは、Unraid 7.x系のWeb UIが提供するGraphQLエンドポイントを介してUnraidサーバーを操作するためのPowerShellモジュールです。作者は本モジュールをProof of Concept(概念検証)として位置付けており、Unraid APIの進化に合わせて拡張されることを前提としています。要求環境はUnraid 7.0以上(開発時は7.2.2を推奨)、PowerShell 5.1またはPowerShell Coreで、UnraidのWebUIへネットワークアクセスできることが必要です。インストールはPowerShell Galleryから可能で、モジュールは典型的なPowerShellモジュール構造(PSUnraid.psd1 / PSUnraid.psm1 / PSUnraid.format.ps1xml 等)を持ちます。
リポジトリの統計情報
- スター数: 3
- フォーク数: 0
- ウォッチャー数: 3
- コミット数: 4
- ファイル数: 8
- メインの言語: PowerShell
主な特徴
- UnraidのGraphQL APIを直接叩くPowerShellモジュール(Proof of Concept)
- PowerShell 5.1 / PowerShell Coreクロスプラットフォーム対応
- モジュール形式(psd1/psm1)で配布、PowerShell Galleryからのインストールを想定
- 出力フォーマッタ(ps1xml)を用意して、PowerShell上での表示を調整
技術的なポイント
PSUnraidはUnraidのGraphQLエンドポイントとPowerShellのHTTP機能を組み合わせることで、サーバー管理を自動化するためのインターフェースを提供します。GraphQLは柔軟なクエリ言語であり、RESTのように複数エンドポイントを管理する必要がないため、必要な情報を1リクエストで取得しやすい利点があります。PowerShell側ではInvoke-RestMethodやInvoke-WebRequest、あるいはPowerShell CoreのHTTP機能を利用してGraphQLクエリ/ミューテーションを送信し、JSONレスポンスを自動的にPowerShellオブジェクトにマッピングする設計が想定されます。
モジュール構成を見ると、PSUnraid.psd1(モジュールマニフェスト)とPSUnraid.psm1(実装)により典型的なエクスポート関数群が定義されているはずです。PSUnraid.format.ps1xmlは、取得したオブジェクトをPowerShellコンソールで見やすくするための表示フォーマットを定義しています。セッション管理・認証の取り扱いはGraphQLの性質上、クッキーやトークンの保持、CSRF対策などが必要になるため、モジュールはセッション確立・維持の仕組みを含める必要があります。
実運用に向けては、エラーハンドリング(HTTPエラー、GraphQLのエラーフィールド対応)、リトライやタイムアウト設定、入力のバリデーション、型付けされた戻り値の提供(PSCustomObjectやクラス)などが重要です。また、PowerShell Core対応によりLinuxやmacOSの環境からもUnraidの自動化が可能で、CI/CDパイプラインやAnsible/Puppetなどの構成管理ツールと組み合わせる運用も見込めます。現状は機能が限定されるProof of Conceptであるため、拡張(追加コマンド、詳細なドキュメント、テスト、例外処理の強化)が今後の課題です。
プロジェクトの構成
主要なファイルとディレクトリ:
- LICENSE: file
- PSUnraid.format.ps1xml: file
- PSUnraid.psd1: file
- PSUnraid.psm1: file
- README.md: file
…他 3 ファイル
(補足)
- PSUnraid.psd1: モジュールのメタ情報(バージョン、エクスポート関数など)
- PSUnraid.psm1: 実際の関数実装。GraphQLクエリ/ミューテーションの送受信や認証処理を含む想定
- PSUnraid.format.ps1xml: PowerShellコンソール上での見た目をカスタマイズ
使いどころと拡張案
- 運用自動化: シャットダウン、再起動、プラグイン管理、システム情報取得などをスクリプト化して運用負荷を軽減
- 監視連携: 取得した状態をPrometheusやGrafanaに送る、あるいはPushover/Slack通知でアラート化
- CI/CDやバックアップ: バックアップジョブのトリガや状態確認をパイプラインから実行
- セキュリティ面: API呼び出しはHTTPSを利用し、資格情報はWindows Credential ManagerやSecretStore/SecretManagementモジュールに格納することを推奨
- 開発面: Pesterによるユニットテスト、詳細なドキュメント(コマンド例)、追加のGraphQLラッパ関数を実装してモジュールを強化
まとめ
UnraidをPowerShellで扱うための小規模な概念実証モジュール。拡張で実用性が高まる基盤。
リポジトリ情報:
- 名前: PSUnraid
- 説明: PowerShell module for managing Unraid 7.0+ using its GraphQL API. This module is more of a proof of concept than a fully featured module at this time.
- スター数: 3
- 言語: PowerShell
- URL: https://github.com/jlabon2/PSUnraid
- オーナー: jlabon2
- アバター: https://avatars.githubusercontent.com/u/68278602?v=4
READMEの抜粋:
PSUnraid
An unofficial PowerShell module for managing Unraid 7.x servers via the GraphQL API. This module is a proof of concept and will evolve as the Unraid API evolves.
Requirements
- Unraid 7.0+ (Required for GraphQL endpoint) [This module was developed with 7.2.2 - this is the recommended minimum version]
- PowerShell 5.1 or PowerShell Core
- Network access to the Unraid WebUI
Installation
# Install from PowerShell Gallery
Install-Module PSUnraid
...