Prism Central の X-Play という運用手順自動化の機能で、Trello と連携してみます。今回は、Prism Central で VM が作成された際に、自動的に Trello のボードにカードを追加してみます。
今回の内容です。
- はじめに
- 今回の Nutanix 環境
- Trello での準備
- curl を利用した Trello の ID 確認
- Prism Central での X-Play プレイブックの作成
- Prism Central での VM 作成
はじめに
Trello は、タスク管理するツールです。「ボード」を作成して、その上に「リスト」と「カード」を作成してタスクを管理します。
そこで、Trello ではボードとリストを作成しておき、Prism Central で VM が作成されたら、X-Play の REST API Action で自動的にリストにカードが作成されるようにしてみます。
Trello の REST API 操作は、下記のあたりの Trello サイトが参考になります。
今回の Nutanix 環境
Nutanix CE のバージョンは下記です。
- Nutanix CE: ce-2020.09.16-stable
- Prism Central: pc.2020.09.16
Trello での準備
Trello でのボード / リスト作成
ボードの作成
まずは、ボードを作成しておきます。
画面右上にある「+」ボタンなどから作成できます。そして今回は「Nutanix-Board-01」という名前にしておきました。
リストの作成
「リストを追加」から、2つリストを作成しています。
「新規作成されたVM」と「確認済みVM」というリストを作成しました。
開発者向け API キーとトークンの取得
Trello の REST API 操作には、API キーとトークンが必要です。これらは、Web ブラウザから取得しておきます。
Web ブラウザで Trello にログインした状態で、「https://trello.com/app-key」にアクセスします。このとき Trello にログインしているユーザを、Prism Central との連携で使用されることになります。
同意確認のチェックを ON にして、「API キーを表示」をクリックします。
API キーが表示されるので、記録しておきます。
そして、「トークン」のリンクをクリックします。
アクセス許可を確認されるので、画面下にスクロールして「許可」をクリックします。
トークンが表示されます。
curl を利用した Trello の ID 確認
Trello の REST API では、ボードやリストなどを、ID で指定します。そこで、ボードとカードの ID を確認しておきます。
なお、ここからは Linux で curl と jq コマンドを利用していますが、Windows でも curl.exe や Invoke-WebRequest などで(jq は代わりに長い JSON データの目視などで)も代用できます。
まず、さきほど取得した API キーとトークンを変数に代入しておきます。
$ API_KEY=32文字の文字列 $ TOKEN=64文字の文字列
ボード ID を取得します。こからは jq がインストールされていない場合は、「| jq ~」以降は省略して、id や name といったプロパティは目視などで探します。
$ curl -s "https://api.trello.com/1/members/me/boards?key=$API_KEY&token=$TOKEN" | jq -r '.[] | [.id, .name]' [ "24文字の文字列", "Nutanix-Board-01" ]
ちなみに、URL にある「me」は、ユーザ ID の代わりとして指定できます。実際には、トークンを発行したユーザで API コールしています。代わりにユーザー ID も指定できます。
$ curl -s "https://api.trello.com/1/members/me?key=$API_KEY&token=$TOKEN" | jq -r '[.username, .fullName, .id]' [ "gowatana", "Go Watanabe", "24文字の文字列" ]
ボード ID も、変数に代入しておきます。
$ BOARD_ID=24文字の文字列
リスト ID を取得します。さきほどボードに作成したリストの ID です。
$ curl -s "https://api.trello.com/1/boards/$BOARD_ID/lists?key=$API_KEY&token=$TOKEN" | jq -r '.[] | [.name, .id]' [ "新規作成されたVM", "24文字の文字列" ] [ "確認済みVM", "24文字の文字列" ]
今回は「新規作成されたVM」リストにカードを作成するので、変数に ID を代入しておきます。
$ LIST_ID=24文字の文字列
リストに、カードを作成してみます。
URL のパラメータには、下記を追記しています。
- desc=Created%20by%20API → カードの説明。%20 はスペースなので「Created by API」になる。
- name=api_test → カードの名前。
$ curl -s -X POST "https://api.trello.com/1/cards?key=$API_KEY&token=$TOKEN&idList=$LIST_ID&desc=Created%20by%20API&name=api_test"
Trello のボードに、カードが作成されます。
desc で指定した説明文も追記されています。
ちなみにカードは、「アーカイブ」→「削除」で削除できます。
このあと X-Play で利用するため、このときの curl で指定した URL を記録しておきます。便宜上 ID を変数に代入していましたが、curl コマンドの先頭に echo をつけて実行すると実際の URL が取得しやすいかなと思います。
$ echo curl -s -X POST "https://api.trello.com/1/cards?key=$API_KEY&token=$TOKEN&idList=$LIST_ID&desc=Created%20by%20API&name=api_test
Prism Central での X-Play プレイブックの作成
Prism Central にログインして、「オペレーション」→「プレイブック」→「プレイブックの作成」をクリックします。
「Event」を選択します。
「Select an Event Type」で、「Created VM」を選択します。「目標VM」は「該当するすべてのVMs」のまま、「アクションの追加」をクリックします。
「アクションの選択」で、「REST API」を選択します。
「Method」は「POST」を選択します。
「URL」には、さきほどカードを作成した(そして変数を展開ずみの)URL 文字列を貼り付けます。
カード名に VM 名を含めたいので、URL を編集します。
URL 末尾は「name=」までにして、「=」のあとにカーソル移動したまま、「パラメータ」→「Source Entity Name」を挿入します。
ついでに、同名の VM が作成されても判別できるように、VM の UUID も含めます。
さらに末尾に、「%20」(半角スペース)を入力し、「パラメータ」→「Source Entity
」を挿入します。
URL を入力できたら、「保存して閉じる」をクリックします。
「氏名」(プレイブックの名前)と「説明」(なくても可)を入力して、「ステータス」を有効にしてから「保存」をクリックします。
これでプレイブックが作成されました。
Prism Central での VM 作成
Prism Central で、VM を作成してみます。
ためしに、test-vm-01 という VM を作成します。
test-vm-01 が作成されました。
同時に、Trello にも、VM の名前と UUID が記載されたカードが作成されました。
「説明」も、curl でのテストと同様に記載されています。
Trello では、このカードにコメントを追記したり・・・
ドラッグ&ドロップで別のリストに移動したりできます。
以上。