株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

【Dell Blog】iDRACをPowerShellで管理しよう

こんにちは、ネットワールドストレージ担当です。

今回はiDRACをPowerShellで操作する方法をご紹介します。

 

PowerShellからRedfishという業界標準のAPIを実行しiDRACを操作をします。

iDRACはGUIから操作しますと手順が分からなくても少しうろうろしながら操作すればマニュアルを見ずとも目的が達成できる人にやさしい作りだと思います。
一方で複数台同じ操作をすると数台ならいいですが、多くなればなるほど大変になります。

こういった場合によく使われるのがREST APIなどになりますが、種類によってはプログラミング経験が無い方は抵抗感がある人もいるように見受けられます。

今回ご紹介する方法はPowerShellからコマンドを実行するだけですので、CLI操作をしたことがあれば他の便利ツールよりは抵抗なく使えるのではないかと思います。
またPowerShellは大文字と小文字の区別がないのもありがたいです。

ユーザ作成、仮想メディアの設定、ブートデバイスの設定、RAIDの設定やファームウェアアップデートなどできることは多いですが、万人受けよりマニア受けを狙っているツールな印象です。

まずはインストールの仕方です。
最初にPowerShellを起動しますが、この時にPowerShellは管理者として実行し起動します。
これをしないとモジュールのインストールができません。

インストールは以下のコマンドを実行します。
Install-Module -Name IdracRedfishSupport
途中にリポジトリを信頼するかどうかの確認が入りますのでYで進めます。
https://www.powershellgallery.com/packages/IdracRedfishSupport/

これで準備は完了です。
まずはどんなコマンドがあるか見ていきましょう。
コマンドの一覧はPowerShellのGet-Commandを使用して見ることが可能です。
そのまま打つと他のものが混じってしまいますので、以下のように-moduleオプションにて対象を絞ると良いです。
Get-Command –module IdracRedfishSupport
githubのページからもコマンドは確認可能です。
https://github.com/dell/iDRAC-Redfish-Scripting

コマンドはGet-xxx、Invoke-xxx、Set-xxxの3種類があります。
Get-から始まるものが参照系、それ以外は設定変更のコマンドのように見えるかもしれませんが
Invoke-xxxやSet-xxxから始まるコマンドは大抵の場合、確認コマンドのオプションが存在します。
Set-DeviceFirmwareSimpleUpdateREDFISHコマンドですと-view_fw_inventory_onlyが設定確認のオプションになります。

次にシンタックスの確認です。
シンタックスの確認はPowerShellのGet-Helpコマンドを使用します。
Get-Helpコマンドの後にヘルプを見たいコマンドを入力します。
PowerShellの標準機能にしっかりアドオンの内容も反映されているのがありがたいです。

これでコマンドとシンタックスの確認ができるようになりました。

続いて、コマンドの実行方法です。
なにかをするにはiDRACへGUIでアクセスする時と同じだけの要素が必要になります。
具体的にはIPアドレス、ユーザ名、パスワードの3点です。
-idrac_ip、-idrac_username、-idrac_passwordといったオプションになります。
この3点に相当する情報は必須ですが、オプション自体は必須ではありません。
接続先のIPはなにか?ユーザとパスワードは?とオプションをつけなくてもちゃんと聞いてくれます。

では実際にユーザ作成のコマンドを実行してみます。

コマンドは以下のようになります。
注意点としてはiDRACのパスワード要件を満たしていなければユーザは作成されても無効の状態になります。

またOperatorやAdministratorのような役割単位でしか権限付与はできず、各項目単位で権限の変更はできないようです。

Invoke-CreateIdracUserPasswordREDFISH -idrac_ip x.x.x.x -idrac_username root -idrac_password calvin -idrac_user_id 3 -idrac_new_username testuser01 -idrac_new_password password -idrac_user_privilege Operator -idrac_user_enable true

確認コマンドは以下の通りです。
設定変更コマンドに-get_idrac_user_accountsオプションをつけることで参照系コマンドになります。

Invoke-CreateIdracUserPasswordREDFISH -idrac_ip x.x.x.x -idrac_username root -idrac_password calvin -idrac_user_id 3 -get_idrac_user_accounts

ファームウェア関連のコマンドを見ていきたいと思います。
ファームウェアの確認も設定変更コマンドのSet-DeviceFirmwareSimpleUpdateREDFISHに
-view_fw_inventory_onlyオプションをつけることで参照コマンドになります。

このコマンドで各ハードウェアのファームウェアを見ることができますが、1デバイスに10行を超える行数が使用されており非常に見ずらいです。
そこでPowerShellらしくちょっと工夫し表示します。
先ほどのコマンドの末尾にパイプを入れてPowerShellのFormat-Tableに渡します。
PowerShellのコマンドはプロパティ名を指定して操作が可能になっていて、Format-Tableでは表示する内容を絞ることが可能です。
今回はデバイス名とファームウェアバージョンとIDの3点にします。

| Format-Table Name,Version,SoftwareId

だいぶ見やすくなりましたね!
このように工夫次第で簡単に必要な情報を表示したい形式に変更することも可能になっています。
成形次第では運用系の方はレポーティングにも使えると思いますし、構築系の方はテストのエビデンスにも使えそうですね。


複数台で実行したい場合は以下のようにIPアドレスだけを変数にしてforeachコマンドで繰り返し実行させることもできます。x.x.x.xとy.y.y.yの部分にIPアドレスが入ります。

$items = "x.x.x.x","y.y.y.y"
foreach ( $item in $items)
{
Set-DeviceFirmwareSimpleUpdateREDFISH -idrac_ip $item -idrac_username root -idrac_password calvin -view_fw_inventory_only | Format-Table Name,Version,SoftwareId
}

PowerShellを使用することで痒い所に手が届かないコマンドを理想の形に変えることができ、CLIだからこそ複数台の操作も簡単にできるようになっています。

こういった便利ツールを使用して管理/設定を楽して行っていきましょう!
それでは次回またお会いしましょう!