Azure

Windows azure 仮想マシンをコマンドラインツールから操作する

More than 3 years have passed since last update.


準備

まずインストール。実行環境は Ubuntu 13.10。

azure-cli は node.js 上で動くので、それからインストール。

# apt-get install nodejs npm

# npm install azure-cli -g

これで azure コマンドが使えるようになる。

次にアカウントの設定をするため、必要なファイルを準備する。

これは、次のコマンドを実行すると、ダウンロードするための URL (今回は http://go.microsoft.com/fwlink/?LinkId=254432 だった) が表示されるので、ブラウザでそれを開く:

azure account download

azure コマンドは #!/usr/bin/env node を実行しようとする。

しかし apt-get でインストールすると node ではなく nodejs になるので、vim `which azure` して shebang を編集するか、nodejs `which azure` なりして実行する必要がある。

さて、サブスクリプションが有効なアカウントでログインすると、ダウンロードが始まる。

ここで取得したファイルを、次のように反映する:

azure account import Visual\ Studio\ Professional\ with\ MSDN-3-1-2014-credentials.publishsettings

これで実行できるようになっているはずなので、確認してみる:

$ azure vm location list

info: Executing command vm location list
+ Getting locations
data: Name
data: --------------
data: East Asia
data: East US
data: Japan East <<<
data: Japan West <<<
data: North Europe
data: Southeast Asia
data: West Europe
data: West US
info: vm location list command OK


SSH 用の鍵の生成

Windows azure では openssh 形式の公開鍵を受け付けてくれないので、以下のように openssl コマンドで作成しておく:

$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout azure.key -out azure-cert.pem

# パラメータは適当でいいようだ
$ mv -i azure* ~/.ssh
$ chmod 600 ~/.ssh/azure.key

$ cat >> ~/.ssh/config <<EOB
Host *.cloudapp.net
User azureuser
IdentityFile $HOME/.ssh/azure.key
EOB


VM を起動してみる

VM イメージ一覧:

$ azure vm image list

作成 & 起動:

$ azure vm create \

--location 'Japan East' \
--vm-size ExtraSmall \
--ssh \
--ssh-cert ~/.ssh/azure-cert.pem \
--no-ssh-password \
azuretest-vm1 \
b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu_DAILY_BUILD-saucy-13_10-amd64-server-20140223-en-us-30GB \
azureuser

--ssh を付けておかないと、--no-ssh-password が、--ssh-cert が無いと言って、エラーになるし、そもそも sshd が起動しないので注意。

ココ には 22/tcp を開けるようにとあるけど、勝手にやってくれるので不要。

起動するまでしばし待つ。心なしか WebUI から作るよりも早い気がする。

$ ssh azuretest-vm1.cloudapp.net


後片付け

VM を停止 & 削除する。--blob-delete を付けると、ディスクも一緒に削除してくれる... ハズなんだけど、削除されない。謎。

azure vm shutdown azuretest-vm1

azure vm delete [--blob-delete] azuretest-vm1