実はWindows AzureはLinuxでIaaSとしても使え、コマンドラインツールで操作できる。コマンドベースで環境構築し仮想マシンを作成してみた。
Windows Azureをはじめとしたクラウドサービスの多くでは、Webの管理画面だけではなく、プログラムからサービスを制御・利用するためのAPIが備わっている。主に管理作業を自動化するためのものだ。
こうしたAPIを使うにはプログラミングスキルや開発環境が必要になるが、「Windows Azure」ではOS X/Mac OS XおよびLinuxでAPIを使うコマンドラインツール「Command Line Interface」(以下、CLI)が用意されていて、ハードルが低くなっている。
本稿では、このCLIをLinux上で使う方法について解説する。なお、CLIで操作するAzure環境のアカウント作成については記事「英語管理画面でムリしてる人が知らないと損する:無料で始めるクラウドLAMP構築超入門」の「Windows Azureのサインアップ」の章を参照してほしい。
Windows AzureのCLIはJavaScriptで記述されていて、「Node.js」というJavaScriptの実行環境上で動作する。Node.jsが動作する環境であれば、Linuxに限らず動作する。
そのため、CLIを使うには最初にNode.jsをインストールして使えるようにしておかなければならない。Node.jsは公式サイトから最新版をダウンロードしてインストールする。2013年12月の原稿執筆時点では0.10.23が最新版だ。
Linuxではソースコードからビルドすることも容易だが、今回は間違いのないよう、ビルド済みのバイナリを用いる。インストール先のLinuxが、32bitなのか64bitなのかを確認し、「Linux Binaries(.tar.gz)」の行にあるリンクからダウンロードしよう。目的のLinux上でダウンロードするには、リンクURLをコピーして、次のようにwgetコマンドでダウンロードする。
$ wget http://nodejs.org/dist/v0.10.23/node-v0.10.23-linux-x64.tar.gz
バイナリなので、ダウンロードされたアーカイブを展開すればすぐ実行できるのだが、インストール場所をどうするかという問題がある。システムワイドにインストールするのであれば、「/usr/local/bin」などに置くことになるが、いきなり影響範囲が大き過ぎると考える向きもあるだろう。今回は取りあえず使ってみる目的で、自分のホームディレクトリに置くことにする。
$ cd $ tar zxvf node-v0.10.23-linux-x64.tar.gz $ mv node-v0.10.23-linux-x64 nodejs $ ~/nodejs/bin/node -v v0.10.23
上記の実行例では、展開したディレクトリを「nodejs」という名前に変えた後、Node.jsの実行コマンドである「node」を実行し動作確認をしている。後述するが、CLIもnodejsディレクトリにインストールされるので、やり直したかったり削除したかったりする場合はnodejsディレクトリを削除すればよい。
Node.jsのライブラリやアプリケーションは、「npm」というNode.jsに付属しているコマンドで管理できるようになっている。ダウンロードからインストール、依存するライブラリの解決まで面倒を見てくれる、いわゆるパッケージマネージャーだ。
Windows Azure CLIもnpmを使ってインストールできるようになっており、次のようにしてインストールする。
$ ~/nodejs/bin/npm install -g azure-cli
コマンドライン中の「-g」オプションは、nodeコマンドのあるライブラリパス、つまりこの場合なら「~/nodejs/lib/node_modules」以下にインストールすることを指示している。このオプションを付けないとカレントディレクトリにインストールされるので、注意しよう。
実行すると、依存ライブラリのダウンロードやインストールの状況が表示されるので、しばらく待とう。結構な数のダウンロードが行われる。完了すると、CLIは「~/nodejs/bin/azure」としてインストールされる。
ここまでの手順通りにやった上で「~/nodejs/bin/azure」を実行すると、エラーとなったはずだ。このファイルの1行目を見てみよう。
#!/usr/bin/env node
この場合、nodeコマンドがサーチパス上に存在していなければならない。環境変数PATHに「~/nodejs/bin」を追加するか、上記ファイルの「/usr/bin/env node」の部分をnodeコマンドの絶対パスに書き換えて対応しよう。
対応したら実行してみて動作することを確認する。次のようなヘルプが表示されるはずだ。
$ ~/nodejs/bin/azure info: _ _____ _ ___ ___ info: /_\ |_ / | | | _ \ __| info: _ ___/ _ \__/ /| |_| | / _|___ _ _ info: (___ /_/ \_\/___|\___/|_|_\___| _____) info: (_______ _ _) _ ______ _)_ _ info: (______________ _ ) (___ _ _) info: info: Windows Azure: Microsoft's Cloud Platform info: info: Tool version 0.7.4 help: help: Display help for a given command help: help [options] [command] help: help: Open the portal in a browser help: portal [options] help: help: Commands: help: account Commands to manage your account information and publish settings help: config Commands to manage your local settings help: hdinsight Commands to manage your HDInsight accounts help: mobile Commands to manage your Mobile Services help: network Commands to manage your Networks help: sb Commands to manage your Service Bus configuration help: service Commands to manage your Cloud Services help: site Commands to manage your Web Sites help: sql Commands to manage your SQL Server accounts help: storage Commands to manage your Storage objects help: vm Commands to manage your Virtual Machines help: help: Options: help: -h, --help output usage information help: -v, --version output the application version
azureコマンドは、ヘルプにもあるように幾つかのサブコマンドを指定して実行する。それぞれのヘルプは「azure help {サブコマンド}」のようにして参照できる。Azureの用語や仕組みになじんでくれば、ヘルプを見れば何ができるのかだいたい理解できるようになるだろう。
さて、CLIを使うには、まずアカウント情報を設定しなければならない。「account download」を実行すると、アカウント情報をダウンロードするためのURLが表示され、環境によってはブラウザーが起動する。
$ ~/nodejs/bin/azure account download info: Executing command account download info: Launching browser to http://go.microsoft.com/fwlink/?LinkId=254432 help: Save the downloaded file, then execute the command help: account import <file> info: account download command OK
指定URLにアクセスしてサインインすると、アカウント情報を収めたファイルのダウンロードが始まるので、保存しよう。保存したファイルはLinux上にscpなどで転送する。ここではそのファイル名を「credentials.publishsettings」とする。
次に、転送したアカウント情報を「account import {ファイル名}」でインポートする。
$ ~/nodejs/bin/azure account import credentials.publishsettings info: Executing command account import info: Found subscription: 従量課金 info: Setting default subscription to: 従量課金 info: Use "azure account set" to change to a different one info: Setting service endpoint to: https://management.core.windows.net/ warn: The "credentials.publishsettings" file contains sensitive information warn: Remember to delete it now that it has been imported info: Account publish settings imported successfully info: account import command OK
インポートが終わったら、ファイルは不要なので削除しておこう。インポートされた情報は実行ユーザーの「~/.azure」ディレクトリ内に保存されているので、CLIの利用をやめる場合などはこのディレクトリを削除すればよい。
また、複数ユーザーの環境ではパーミッションなどの取り扱いに注意しよう。
保存されたアカウント情報は、1カ月の無料期間であったり、従量課金や年払いといったサブスクリプションにひも付いていたりする。もしサブスクリプションが複数ある場合は、そのまま複数インポートされる。状況を確認するには「account list」を実行する。
$ ~/nodejs/bin/azure account list info: Executing command account list data: Name Id Current data: ---- ------------------------------------ ------- data: 従量課金 ********-****-****-****-************ true
上記の例では、1つのサブスクリプションがある。複数のサブスクリプションがあれば複数表示されるはずだ。その場合、どのサブスクリプションを使うかを指定しなければならない。それには「account set {サブスクリプションID}」を実行する。
Copyright © ITmedia, Inc. All Rights Reserved.