ピュア・ストレージ・ジャパンのポールです。今回から数回にわたって Pure1 REST API をご紹介したいと思います。
Pure1 REST API の概要
まずは、なぜ Pure1 REST API が存在するのか、その背景をご説明します。
Pure1 は、ピュア・ストレージが提供するクラウドベースの管理ツールです。Pure1 の概要は、同僚の岩本によるブログ記事「クラウドベース管理ツール Pure1 ― 概要とメリット」にわかりやすく解説されていますので、そちらをご参照ください。ここでは、この後の説明に繋げるために、Pure1 からの情報をもとに Pure1 Rest API を使用する実例をご紹介します。
- ピュア・ストレージの FlashArray や FlashBlade は、ストレージの状態を通知するために、PhoneHome 機能により定期的にログを Pure1 クラウドへ送信する。
- ログが解析され、Pure1 上でストレージの状態が可視化される。
- ユーザーは、可視化されたストレージの状態を Pure1 Manage を介して閲覧できる。
- Pure1 Manage を使用することで、各ストレージの管理画面に直接アクセスする必要がなくなる。
- Pure1 Manage を使用するには 2 つの方法がある。
- Web ブラウザからアクセス
- モバイルアプリからアクセス(iOS / Android 対応)
Pure1 Manage を使用すれば、場所を選ばず手軽にストレージの状態を閲覧することができます。例えば朝の出勤時に、自身が管理するストレージにアラートが上がっていないか、容量に余裕はあるかといったことを、モバイル上でチェックすることが可能です。PC の Web ブラウザからも同様のことができます。何事も起きていなければハッピー、アラートなど何か気になる表示があれば対処することになります。
クラウド上のダッシュボードをチェックするだけで、自身が管理する機材をざっとチェックできる―これだけでも十分便利ではあるのですが、ひとつ足りない点があります。それは、最近流行りの自動化です。Web ブラウザを起点にすると、誰かが Pure1 をチェックしなければ何も始まりません。例えば、Pure1 から得られた情報がしきい値を越えたら、自動でアプリケーションに処理をさせる―そんなことができれば、運用がもっと楽になると思いませんか?Pure1 REST API がそれを解決します。Pure1 に REST で問い合わせをし、その返り値を用いてアプリケーションに処理をさせることが可能です。
では、実際に Pure1 REST API を使用してみましょう。初回である今回は、Pure1 に登録されているストレージの一覧を REST でチェックするところまでを実施してみます。
まずは、openssl、python3、curl の3つが動作する環境をご用意ください。最終的に curl を介して Pure1 に問い合わせる際には、アクセストークン(Access Token)が必要です。アクセストークンを生成するには、事前にいくつかの手順を踏む必要があります。
Pure1 REST API を使用するための大まかな認証手順
- openssl を使用してキーペア(秘密鍵と公開鍵)を生成する
※ 初回だけで OK - 公開鍵を Pure1 Manage に登録し、アプリケーションID を取得する
※ 初回だけで OK - Python スクリプトに秘密鍵とアプリケーションID を与え、アクセストークンを生成する
※ アクセストークンには有効期限があるため、再生成が必要 - アクセストークンを用いて、curl で Pure1 REST API を使用する
Pure1 REST API を使用するための認証手順―実際の例
前述の認証手順に沿った実際の手順を見てみましょう。
1. openssl を使用してキーペア(秘密鍵と公開鍵)を生成する
秘密鍵(private.pem)の生成
openssl genrsa -aes256 -out private.pem 2048(パスフレーズを入力)
公開鍵(public.pem)の生成
openssl rsa -in private.pem -outform PEM -pubout -out public.pem
2. 公開鍵を Pure1 Manage に登録し、アプリケーションID を取得する
Web ブラウザから Pure1 Manage にログインし、左側下部に Administration メニューが表示されていることを確認してください。 Administration メニューが表示されない場合は、所属する組織内の管理者権限を持つユーザーに登録作業を依頼してください。
Administration メニューから「API Registration」⇒「+ Register Application」とクリックすると、図 2 のようなダイアログボックスが表示されます。キーペアになっている秘密鍵の所有者に識別可能な名前をつけてもらい、先ほど生成した公開鍵を登録します。
登録が完了すると、Pure1 Manage の画面に アプリケーションID「pure1:apikey:?????????」が表示されますので、メモしておいてください。ご参考までに、実際に私が Pure1 Manage で登録した状態(図 3)をお見せします。
「Created By」には、公開鍵の登録を行った Pure1 管理者権限をもつユーザーのメールアドレスが表示されます。
※ 図 3 のエントリーは、本記事の公開前に削除済みです。
3. Python スクリプトに秘密鍵と アプリケーション ID を与え、アクセストークンを生成する
サポートサイトから、以下の 2 つのファイルをダウンロードしてください。サポートサイトへのアクセスには認証が必要です。
Python スクリプトを実行するために必要な Python3 パッケージを、pip を用いて導入します。
pip install -r requirements.txt
次に、Python スクリプトを用いてアクセスキーを生成します。
文法:
python3 pure1_token_factory.py -o <output_file> <application_id> <private_key_file>
例:
python3 pure1_token_factory.py -o access_token.txt pure1:apikey:Osn0ExK9x21r5aWI private.pem
スクリプト内でパスフレーズ関連の処理がうまくいかなかった場合は、次のようなエラーが返されます。
Error: Invalid private key password
その場合は、次のコマンドで暗号解除済みの秘密鍵「private.txt」を生成し、Python スクリプトで使用してください。
openssl rsa -in private.pem > private.txt(パスフレーズの入力が必要)
生成されたアクセストークンの例を以下に示します。Web ブラウザ上では行が折り返して表示される場合がありますが、実際には改行を含まないテキストです。
1 2 3 |
eyJraWQiOiJjM1ZtKzlyaTB4WXV3UG5MYXFqVkQ2OWNYWWFFIiwidHlwIjoiSldUIiwiYWxnIjoiUlMyNTYifQ.eyJhdWQiOiJJbnRlcm5hbCIsInN1YiI6NjksInJvbGUiOiJDVVNUIiwib3JnIjozNjQsInBoX29pZCI6OTE2NiwiZW1haWwiOiJ0YW5ha2EueXVpY2hpcm8ucHJpdmF0ZUBnbWFpbC5jb20iLCJpc3MiOiJodHRwczovL3RleC5jbG91ZC1zdXBwb3J0LnB1cmVzdG9yYWdlLmNvbSIsImlhdCI6MTU0NzEwMTczMywiZXhwIjoxNTQ3MTM3NzMzLCJqdGkiOiI5NjcyODM4NC00N2ZhLTRhZDMtYmNkOC03MTIxMTY3NDA5MzUifQ.Zw-Cg6L83yyCq6wPURPqiqkmnq8md951CKbGa18OuR48bzzmem3-V2CpdbeidSynjh9mocb_wGGyluvMO-0TmP2TMYGShDlHT5wKuYEDEjjS9vKk2ENa2zi4ypZ2MunZzcOcqIdbk2vIU512cAvBCAQW-Ol9rSxRdMej4Y37L9zwle3Iqj4m1S362FigU5PKrHALPU1alUzGKpU0SdD_MHEuTgdFaL2C4_ht2vt3XnEGrrHNAA5fYgEhrBNUazMuK4F05bxoDWTiUep06QqX921JGh5b0eSHthp6C7Kx-2Zgv-Djh9ZKkxRT1HywlbWAuRRY3Y2lUskARStdzXJdxw |
※ アクセストークンは、作成時から 10 時間が経過すると無効になります。上記のトークンは既に無効となっています。
4. アクセストークンを用いて、curl で Pure1 REST API を使用する
- アクセストークンの出力ファイル「access_token.txt」を用いて、次のような curl コマンドを実行してください。「arrays」は、アレイ一覧を入手するためのエンドポイントです。
1 2 3 4 |
ACCESS_TOKEN=`cat access_token.txt` curl -X GET “https://???????????????????????/arrays” -H “accept: application/json” -H “Authorization: Bearer $ACCESS_TOKEN” |
上記のコマンドでは URL の一部を伏せ字にしています。実際に Pure1 REST API を使用される際は、サポートサイトのリファレンスで正しい URL をご確認ください。
返り値として、アレイ情報を含む次のような文字列が得られます。
1 2 3 |
{“total_item_count”:1,”continuation_token”:null,”items”:[{“id”:”4475796c-64ce-46f2-a8c7-c37a76e61b36″,”name”:”Japan-Lab-Tokyo-FA”,”model”:”FA-m50r2″,”os”:”Purity//FA”,”version”:”5.1.5″,”_as_of”:1547101847000}]} |
上記は、ピュア・ストレージ・ジャパンの検証用ラボで動作している FlashArray //M50R2 の情報です。Pure1 から REST を使用してアレイ情報を取り出すことに成功しました。
まとめ
今回は、REST で Pure1 から情報を取り出すために必要な認証の手順を中心にご説明しました。次回は、Pure1 REST API によって Pure1 からどのような情報を取り出せるかをご紹介します。
今後ともピュア・ストレージをよろしくお願いいたします。