MacからMicrosoft Azureを制御するためのコマンドラインインターフェースの使い方メモ(使ったものから随時更新)
インストール
前提条件
npmを利用するのでnodeをインストールしておく必要がある。
インストール
sudo npm install -g azure-cli
update
sudo npm update -g azure-cli
Azureへのログイン
Azureにログインするにはいくつかのタイプがある。いわゆるマイクロソフトアカウントを利用する場合は、
azure login
と打つと、http://aka.ms/devicelogin にアクセスしてコンソールに表示される認証コードを入力しろ!と言われるのでそれに従います。
その他のログイン方法はここをご覧ください。
ASMモードとARMモード
コマンドにはASMモードとARMモードのものがあり、Webでいうと旧ポータル系と新ポータル系に別れる。各モードで作ったリソースは原則として各モードでしか制御できないため、新旧入り乱れてのリソースを使ってる人はモードを意識して操作をする必要がある。また、リースによってはどちらかで強制的に作られるものもあるため注意が必要です。両者のちがいについてはこちら。
モードの確認
現在のモードを確認するにはazure config listのmodeを確認する。下記ではarmモードになっています。
azure config list
info: Executing command config list
info: Getting config settings
data: Setting Value
data: ------- -----
data: mode arm
モードの変更
下記はasmへの変更。現在がasmならarmとする。
azure config mode asm
リソースの制御
何はなくてもとりあえず一覧。VMやStorageやらとりあえず区別せずに表示。
一覧
azure resource list
リソースグループを指定した一覧。
azure resource list testRG
削除
リソースコマンド?で削除するのは少々難儀です(いろいろ指定しないといけない)。
一番簡単な(引数が少ない)のはresouce listで得られるリソースIDとapiVersionを指定するもの。
azure resource -i RESOURCE_ID -o "2015-08-01"
正直、最新のapiVersionをどう確認するかなどよくわかっていない。おそらくはここのSchemaのところを-oで与えるのかなと。
vm deleteとか、専用のコマンドを利用するほうがスッキリする。
リソースグループの制御
テスト環境を作っていると無意識のうちにリソースグループが作られてしまう。UIで消すのは手間なのでコマンドで消したい。
一覧表示
まずは一覧。
azure group list
info: Executing command group list
+ Listing resource groups
data: Name Location Provisioning State Tags:
data: ---------------------------------- --------- ------------------ -----
data: AzureCloudService1 eastus Succeeded null
data: Default-ApplicationInsights-EastUS eastus Succeeded null
data: Default-Storage-JapanEast japaneast Succeeded null
削除
そして削除。
azure group delete AzureCloudService1
info: Executing command group delete
リソースグループを削除すると、所属する全てのリソースが削除されます。
作成
あまり使いませんが。。。ロケーション名の一覧取得は下記参照。
azure group create GROUP_NAME japneast
ロケーション
VM作成時等にオプションで必要なのでとりあえず一覧の取得だけ覚えておく。
一覧
azure location list
japaneastとjapanwestくらいは覚えておけますが。。。まあ、一応。
~
data: Location : japanwest
data: DisplayName : Japan West
data: Providers : Microsoft.ApiManagement, Microsoft.Batch, Microsoft.ClassicCompute, Microsoft.ClassicNetwork...
data:
data: Location : japaneast
data: DisplayName : Japan East
data: Providers : Microsoft.ApiManagement, Microsoft.Batch, Microsoft.ClassicCompute, Microsoft.ClassicNetwork...
~
VMを制御する
利用するのはもっぱらCentOSなのでその方法。
利用できるVM一覧を見る
LocationとPublisherという概念があるらしく、それを指定する。単にazure vm image listとすると対話的に聞いてきてくれる。
azure vm image list japaneast OpenLogic
下記のような感じ(抜粋)で一覧が表示される。このうち生成時に必要な情報はUrnというやつらしいのでメモしておく。
+ Getting virtual machine image offers (Publisher: "OpenLogic" Location:"japaneast")
data: Publisher Offer Sku OS Version Location Urn
data: --------- ---------- ---- ----- ------------ --------- -------------------------------------
data: OpenLogic CentOS 6.5 Linux 6.5.201501 japaneast OpenLogic:CentOS:6.5:6.5.201501
data: OpenLogic CentOS 6.5 Linux 6.5.201503 japaneast OpenLogic:CentOS:6.5:6.5.201503
data: OpenLogic CentOS 6.5 Linux 6.5.201506 japaneast OpenLogic:CentOS:6.5:6.5.201506
data: OpenLogic CentOS 6.5 Linux 6.5.20150904 japaneast OpenLogic:CentOS:6.5:6.5.20150904
data: OpenLogic CentOS 6.5 Linux 6.5.20160309 japaneast OpenLogic:CentOS:6.5:6.5.20160309
VMを作る
VMをコマンドラインで作るのはいろいろと準備が必要で少々手間がかかります。開発や運用でスクリプト化して自動化したい!などのニーズがない限りはWebポータル使う方がいいでしょう。
少なくとも作成に際しては事前に下記項目の名称を決めたり、作成しておく必要があるようです。
- リソースグループ
- VM名
- ロケーション
- OSのタイプ
- 利用するVMのバージョン(Urn)
- VMのサイズ
- NICの名前
- VNETの名前(それと、prefix 192.168.0.0/16など)
- VNETのサブネットの名前(それと、prefix 192.168.1.0/24など)
- adminユーザー名
- sshの公開鍵
さらにインターネットへの公開のためには、
- グローバルIP
- セキュリティーグループとルールの設定
も必要です(実際は必須かと思います)。
私の場合、生成と削除くらいを自動化できればいいので下記のようなコマンドを利用します(上記、必須部分のみ生成)。
VMを生成した後、WebポータルでIPやセキュリティーグループの割当を(NICに対して)行います。
VM生成に必要な全てのリソースをコマンドで生成する方法についてはこちらの記事が参考になります。
azure vm create \
-g RESOUCE_GROUP \
-n VM_ANME \
--location japaneast \
--os-type Linux \
--image-urn OpenLogic:CentOS:6.8:6.8.20161026 \
--vm-size Standard_A0 \
--nic-name NIC_NAME \
--vnet-name VNET_NAME \
--vnet-subnet-name VSUBNET_NAME \
--admin-username ADMIN_NAME \
--ssh-publickey-file ~/.ssh/id_rsa.pub
このコマンドを実行すると、VNETとSUBNETのprefixを聞いてきますので例えば下記のように答えます。
Enter vnet address prefix: 192.168.0.0/16
Enter vnet subnet address prefix: 192.168.1.0/24
完全自動化するためには予め作成したVNET等を指定するほうが無難でしょう。
VMの一覧
azure vm list
VMの削除
azure vm delete RESOURCE_GROUP VM_NAME
Storageを制御する
ストレージ(アカウント)の一覧
azure storage account list
ストレージ(アカウント)の削除
azure storage account delete SACCOUNT_NAME
対話的にリソースグループ名を聞いてくるようです。