NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix CE の X-Play で Trello 連携してみる。

Prism Central の X-Play という運用手順自動化の機能で、Trello と連携してみます。今回は、Prism Central で VM が作成された際に、自動的に Trello のボードにカードを追加してみます。

今回の内容です。

はじめに

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」という名前にしておきました。

f:id:gowatana:20210407072352p:plain

リストの作成

「リストを追加」から、2つリストを作成しています。

「新規作成されたVM」と「確認済みVM」というリストを作成しました。

f:id:gowatana:20210407072613p:plain

開発者向け API キーとトークンの取得

Trello の REST API 操作には、API キーとトークンが必要です。これらは、Web ブラウザから取得しておきます。

Web ブラウザで Trello にログインした状態で、「https://trello.com/app-key」にアクセスします。このとき Trello にログインしているユーザを、Prism Central との連携で使用されることになります。

同意確認のチェックを ON にして、「API キーを表示」をクリックします。

f:id:gowatana:20210407073530p:plain

API キーが表示されるので、記録しておきます。

そして、「トークン」のリンクをクリックします。

f:id:gowatana:20210407074020p:plain

アクセス許可を確認されるので、画面下にスクロールして「許可」をクリックします。

f:id:gowatana:20210407074120p:plain

トークンが表示されます。

f:id:gowatana:20210407074514p:plain

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 のボードに、カードが作成されます。

f:id:gowatana:20210407082115p:plain

desc で指定した説明文も追記されています。

f:id:gowatana:20210407082200p:plain

ちなみにカードは、「アーカイブ」→「削除」で削除できます。

f:id:gowatana:20210407082246p:plain

このあと 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 にログインして、「オペレーション」→「プレイブック」→「プレイブックの作成」をクリックします。

f:id:gowatana:20210407083521p:plain

「Event」を選択します。

f:id:gowatana:20210407083551p:plain

「Select an Event Type」で、「Created VM」を選択します。「目標VM」は「該当するすべてのVMs」のまま、「アクションの追加」をクリックします。

f:id:gowatana:20210407083845p:plain

「アクションの選択」で、「REST API」を選択します。

f:id:gowatana:20210407083643p:plain

「Method」は「POST」を選択します。

「URL」には、さきほどカードを作成した(そして変数を展開ずみの)URL 文字列を貼り付けます。

f:id:gowatana:20210407084218p:plain

カード名に VM 名を含めたいので、URL を編集します。

URL 末尾は「name=」までにして、「=」のあとにカーソル移動したまま、「パラメータ」→「Source Entity Name」を挿入します。

f:id:gowatana:20210407084359p:plain

ついでに、同名の VM が作成されても判別できるように、VM の UUID も含めます。

さらに末尾に、「%20」(半角スペース)を入力し、「パラメータ」→「Source Entity 
」を挿入します。

f:id:gowatana:20210407084752p:plain

URL を入力できたら、「保存して閉じる」をクリックします。

f:id:gowatana:20210407084840p:plain

「氏名」(プレイブックの名前)と「説明」(なくても可)を入力して、「ステータス」を有効にしてから「保存」をクリックします。

f:id:gowatana:20210407084929p:plain

これでプレイブックが作成されました。

f:id:gowatana:20210407085113p:plain

Prism Central での VM 作成

Prism Central で、VM を作成してみます。

f:id:gowatana:20210407085218p:plain

ためしに、test-vm-01 という VM を作成します。

f:id:gowatana:20210407085248p:plain

test-vm-01 が作成されました。

f:id:gowatana:20210407085358p:plain

同時に、Trello にも、VM の名前と UUID が記載されたカードが作成されました。

f:id:gowatana:20210407090133p:plain

「説明」も、curl でのテストと同様に記載されています。

f:id:gowatana:20210407085556p:plain

Trello では、このカードにコメントを追記したり・・・

f:id:gowatana:20210407085808p:plain

ドラッグ&ドロップで別のリストに移動したりできます。

f:id:gowatana:20210407085836p:plain

以上。

 

©2021 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。