2017年8月7日月曜日

LogicFlow の ARM コネクタで VM を起動する(仮)

以前のアップデートで、Azure Resource Manager もコネクタの認証にサービスプリンシパルが利用できるようになり、それ用にアカウントを作成しなくてもアプリケーション単位での認証が行えるため、特に管理用アプリ的なものから操作したい際に、ユーザー別に考える必要がなくなり便利なケースがあります。今回はそのなかの機能を利用して、VM の起動を試してみました。

VM を起動するにも、Automation を利用したり REST Api を直接叩いたりと色々方法はありますが、LogicFlow の ARM コネクタを利用するのが、個人的には現時点で一番楽な方法だと思います。

ARM コネクタには Invoke resource operation というアクションがあり、これはリソースプロバイダの操作(機能)を直接呼ぶことができるものです。VM の場合、通常であれば Microsoft.Compute プロバイダを利用し、旧型であれば Microsoft.ClassicCompute プロバイダを使用して起動や停止など、一通りの操作が可能です。LogicFlow 上での設定は以下の通りになります。

image

設定する内容のドキュメントが見当たらないので試行錯誤しました(

サブスクリプションを選択すると、対象とするリソースグループが選択でき、利用したいプロバイダを選択できるようになりますので、ここは上から順に設定を行います。

Short Resource Id ですが、これはプロバイダが可能な操作を指定する箇所です。プロバイダごとの操作一覧は docs でまとめてありますが、最新状態とは異なることもあるので、念のために PowerShell 等で確認しておくと安心です。

x-ms-api-version は利用する API のバージョン情報を設定します。これはプロバイダ事に異なるので、事前に調べておくといいでしょう。LogicFlow で行う場合は、対象のプロバイダの情報を取得するアクション Read Resource Provider を利用すると、そのプロバイダで実行できる操作の一覧情報が取得でき、その中に API バージョン情報も含まれています。

image

最後に Action name で実行したい操作を指定します。

と、このように書くと非常に簡単に思えますが実際にはそれぞれのプロバイダで指定の方法が微妙に異なっており、非常に難解になっています。

例えば VM の操作では Microsoft.Compute プロバイダを利用して virtualMachines/start/action を呼び出すと起動できる、と書いてありますが、実際には virtualMachines/{ VM 名 }/start に対して action を呼び出すという事を行う必要があります。そしてそう動作するための設定が、先のスクリーンショットにあるように、

  • Short Resource Id:virtualMachine/{ VM 名 }
  • Action Name:start

と設定する必要があり、まずここに気づくまでに非常に時間がかかりました。なお、現在 ARM コネクタのデザイナ上の表示には不具合があり、上記のように設定後再度デザイナーを開くと、表示が狂います。狂うのですが、実際には正しく設定されているので不思議な状態になります。

image

このように、 Short Resource Id と Action Name の表示がおかしくなります・・・。

それはさておいてこれを実行すると、VM が起動できるのですが、ここにはもう一つ不具合が潜んでいます。

image

これは VM 側のログで、23:28:28 に起動が開始されたのが記録されています。

image

対してこちらが LogicApps 側のログですが、見事に失敗している履歴しかありません。ARM コネクタから戻されたエラーも 404 Not Found となっていて、指定されたリソースがない、というエラーになっています。

ですが、VM 自体は起動開始されているので、これは ARM コネクタ側の不具合なのではないか、というのが現在の状態です。

とまあ、まだ利用するには難しい感じの ARM コネクタですが、プロバイダを直接操作出来たり、テンプレートを利用してデプロイを行えたりと、Azure 上で行えることが一通りできる非常に強力なコネクタなのは間違いありません。

色々と試してみると、日頃の管理作業などが LogicFlow でもっと簡単に行えるのではないでしょうか。

0 件のコメント:

コメントを投稿