PSUnraid — UnraidをPowerShellで操作する実験的モジュール

DevOps

概要

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 等)を持ちます。

GitHub

リポジトリの統計情報

  • スター数: 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で扱うための小規模な概念実証モジュール。拡張で実用性が高まる基盤。

リポジトリ情報:

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

...