はじめに

本稿ではAzureをコマンドラインから操作する2つのツールを紹介します。
1つはAzure PowerShell コマンドレットで、これはAzureを操作するPowerShellのコマンドレット群が提供されます。PowerShellをベースとしているので、Windowsのユーザーにとって慣れ親しんだ操作感を得ることができます。
もう1つは、Azure Command Line Tools(Azure CLI)です。Pythonをベースとして実装されているツールですので、マルチプラットフォームで利用できるのが特徴です。macOS、各種Linuxユーザーはにとってはなじみ深いオプション体系のコマンド群です。
今となってはPowerShellもmacOS、各種Linuxで動作するようになりましたが、おおまかに分類するとAzure PowerShellはWindowsユーザー向け、Azure CLIは、macOS、各種Linuxユーザー向けとなります。
ここからは、2つのコマンドラインツールのインストール方法から仮想マシンを作成するまでの、基本的な説明をしていきます。

Azure PowerShell コマンドレット

Azure PowerShell コマンドレットは、Azureを操作するPowerShellのコマンドレット群です。PowerShellと言えば、以前はWindows専用ツールでしたが、昨今ではmacOSやLinux上でも動作するようになっています。ここでは、Windowsを前提に説明していきます。

Azure PowerShellをインストールする

いくつかのインストール方法があります、MSIインストーラを使ったインストールが簡単です。以下のURLより、azure-powershell.6.5.0.msi(執筆時点での最新)をダウンロードして実行します。インストールウィザードが表示されるので、指示にしたがってインストールしてください。

「Azure/azure-powershell(https://github.com/Azure/azure-powershell/releases)」

インストールが完了したPowerShellを起動します。以下のコマンドを入力して、AzureRmのモジュール情報(*)が表示されれば正しくインストールされているでしょう(リスト1)。

モジュールの確認

PS C:\> Find-Module -Name AzureRm
Version    Name          Repository   Description
-------    ----          ----------   -----------
6.5.0      AzureRM       PSGallery     Azure Resource Manager Module

AzureRmとは、Azure Resource Managerの略で、最新のAzure管理方法の名称です。以前はクラシックモデルと呼ばれた管理方法が存在しており、現在でも互換のため残されていますが、本稿で紹介する方法でこれらを操作することはできません。

Azureサブスクリプションに接続する

ポータルからAzureを操作するのと同じく、Azure PowerShellでAzureを操作する場合にもサインイン操作が必要です。これは、Connect-AzureRmAccount コマンド(別名 Login-AzurermAccount)で行います。コマンドを実行するとサインイン画面が表示されるので、お手持ちのAzureサブスクリプションを保有するアカウントでサインインしてください(図1)。

[リスト1]Azureサブスクリプションへの接続

PS C:\> Connect-AzureRmAccount
  • サインイン画面

    図1:サインイン画面

ログインしたアカウントに紐づくサブスクリプションが複数ある場合、操作するサブスクリプションを選択する必要があります。Get-AzureRmSubscriptionコマンドでサブスクリプションの一覧が表示されます。利用したいサブスクリプションの名前を見つけ、Select-AzureRmSubscriptionのコマンドを実行すると既定のサブスクリプションとして選択されます(リスト2)。

[リスト2]サブスクリプション一覧の取得

PS C:\> Get-AzureRmSubscription
…
PS C:\> Select-AzureRmSubscription -SubscriptionName "Some Subscription"
Name             : Some Subscription - aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
Account          : foo@example.com
SubscriptionName : My Subscription
TenantId         : qqqqqqqq-wwww-xxxx-yyyy-zzzzzzzzzzzz
Environment      : AzureCloud

コマンド体系を理解する

Azure PowerShell には多数のコマンドが存在しますが、以下のコマンド体系を覚えておくと操作するヒントとなります。

{動詞}-AzureRm{機能名}

コマンドの先頭には動詞がきます。先ほどログインしたときのConnectなどです。次にAzureRmの固定文字列で、最後に機能名がきます。

代表的な動詞は以下のとおりです(表1)。

表1 Azure PowerShell の動詞一覧

動詞 意味
New リソースの新規作成
Remove リソースの削除
Add リソースの追加
Get リソースの情報取得
Set/Update リソースの設定や更新
Start/Stop リソースの開始や停止

機能名は多岐にわたります。以下のURLよりリファレンスが参照できます。おおよそ上記の前提を押さえておけば、目的の操作をするためのコマンドが見つかると思います。

「Azure PowerShell コマンドリファレンス(https://docs.microsoft.com/en-us/powershell/module/?view=azurermps-6.5.0)」

仮想マシンを作成してみよう

ここでは、Azure PowerShellを使用して仮想マシンを作成してみたいと思います。あらかじめ作成する仮想マシンのパラメーターを決めておきます(表2)。

表2 仮想マシンのパラメーター

リソース 名前
ロケーション 東日本
リソースグループ名 mynavi
仮想マシン名 mynavi-vm
仮想マシンのOS Windows Server 2016
仮想マシンのサイズ Basic_A1
仮想ネットワーク mynavivnet 10.0.0.0/16
サブネット subnet 10.0.0.1/24

それではパラメーター通り仮想マシンを作成していきましょう。はじめに仮想マシンなどの入れ物となるリソースグループを作成します(リスト2)。同時にポータル画面を表示しながら進めると、作成されたリソースが表示されるのでお勧めです。図2は最終的に完成した後のポータル画面です。

  • 図2:Windows VM作成後のポータル画面

    図2:Windows VM作成後のポータル画面

[リスト2]リソースグループの作成

New-AzureRmResourceGroup -Name mynavi -Location japaneast

次に仮想ネットワークとサブネットを作成します(リスト3)。コマンド実行時に警告が表示されることがありますが、無視して構いません。

[リスト3]仮想ネットワークの作成

$subnet = New-AzureRmVirtualNetworkSubnetConfig -Name subnet -AddressPrefix "10.0.1.0/24"
New-AzureRmVirtualNetwork -Name mynavivnet -ResourceGroupName mynavi -Location japaneast -AddressPrefix "10.0.0.0/16" -Subnet $subnet

仮想マシンを作成します。コマンドを実行すると、ユーザーIDとパスワードの入力を促すダイアログが表示されますが(図3)、これが仮想マシンへログインするためのユーザーIDとパスワードになります。作成が完了するまで数分かかります。

[リスト4]仮想マシンの作成

New-AzureRmVM -Name mynavivm -ResourceGroupName mynavi -Location japaneast -VirtualNetworkName mynavivnet -SubnetName subnet -ImageName Win2012R2Datacenter -Size Basic_A1
  • ユーザーパスワード入力画面

    ユーザーパスワード入力画面

ImageNameオプションには以下のOS名が指定ができます(表3)。これは簡易的なオプション指定なので常に最新のバージョンが選択されます。より細かいバージョン指定をしたい場合は、Get-AzureRMVMImageコマンドで取得したイメージを指定する方法もあります。

表3 指定可能なOS名

OSイメージ名 OS名
Win2016Datacenter Windows Server 2016 Datacenter
Win2012R2Datacenter Windows Server 2012R2 Datacenter
Win2012Datacenter Windows Server 2012 Datacenter
Win2008R2SP1 Windows Server 2008R2 SP1
UbuntuLTS Ubuntu 16.04-LTS
CentOS OpenLogic CentOS 7.3
CoreOS CoreOS Stable
Debian Debian 8
openSUSE-Leap openSUSE-Leap 42.3
RHEL ReadHat Enterprise 7.3
SLES SUSE Linux Enterprise Server 12 SP2

作成が完了したら、リモートデスクトップ接続してみましょう。リモートデスクトップには以下のコマンドを実行します(リスト5)。実行するとリモートデスクトップ接続の警告画面がでますが(図4)、そのまま接続ボタンをクリックすると資格情報の入力画面になりますので(図5)、仮想マシン作成時のユーザーIDとパスワードでログインします。

[リスト5]リモートデスクトップ接続

Get-AzureRmRemoteDesktopFile -Launch -ResourceGroup mynavi -Name mynavivm
  • 図4:リモートデスクトップ警告画面

    図4:リモートデスクトップ警告画面

  • 図5リモートデスクトップ ログイン画面

    図5リモートデスクトップ ログイン画面

最後に仮想マシンを操作する代表的なコマンドを紹介します(表4)。

表4 仮想マシンの操作コマンド

コマンド 意味
Start-AzureRmVM 仮想マシンの開始
Stop-AzureRmVM 仮想マシンの停止
Restart-AzureRmVM 仮想マシンの再起動
Remove-AzureRmVm 仮想マシンの削除。ただし関連リソースは削除されません。

作成したリソースを一括で削除したい場合は以下のコマンドを実行します(リスト6)。リソースグループ内のリソースは、すべて消えてしまいますのでご注意ください。

[リスト6]リソースグループの削除

Remove-AzureRmResourceGroup -ResourceGroup mynavi

ここで紹介した作成例はほんの一例に過ぎません。もっと細かくパラーメータを指定して作成することもできます。

Azure CLI

Azure CLI はもう1つのコマンドラインツールです。Pythonをベースとしており、マルチプラットフォームで使えるのが特徴です(*)。WindowsはもちろんmacOS、各種Linuxディストリビューション上で動作します。ここではUbuntu Linux上で進めていきたいと思いますが、Windows上のWindows Subsystem for Linux上(旧名 Bash on Windows)でも同じ操作ができます。

(*)Azure CLIの現時点での最新バージョンは、2.0系です。以前は、Node.js ベースのツールとなっていましたが、2.0で大幅に変更されコマンド名も変わりました。

Azure CLIのインストール

以下のコマンドを順に実行し、パッケージリストにマイクロソフトのサーバーを紐づけます(リスト7)。

[リスト7] Azure CLI のインストールその1

AZ_REPO=$(lsb_release -cs)
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | sudo tee /etc/apt/sources.list.d/azure-cli.list
sudo apt-key adv --keyserver packages.microsoft.com --recv-keys 52E16F86FEE04B979B07E28DB02C46DF417A0893

次に、apt-getコマンドで必要なパッケージをインストールしていきます(リスト8)。

[リスト8] Azure CLIのインストールその2

sudo apt-get install apt-transport-https
sudo apt-get update && sudo apt-get install azure-cli

最後にazコマンドを入力して図6のように表示されれば正しくインストールできています。

  • 図6:az コマンド実行結果

    図6:az コマンド実行結果

他のプラットフォームでのインストール方法は、「Azure CLI 2.0 のインストール」を参照してください。

Azure サブスクリプションに接続する

Azure CLI でサブスクリプションに接続するためには、az login コマンドを使います。コマンド入力すると、テキストメッセージが表示されて待機状態に入ります(リスト9)。

[リスト9]az コマンドでのログイン

user@mypc:~$ az login
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXYYYZZZ to authenticate.

メッセージに表示されたURLにアクセスするとデバイスのログイン画面が表示されます(図7)。コード欄には、表示されたコードを入力してください。

  • デバイスのログイン画面

    デバイスのログイン画面

次にコードを入力すると、Azure CLI からのログイン要求であることが表示されるので、そのまま続行をクリックします。すると、いつものサインイン画面が表示されるので、お手持ちのサブスクリプションを保有するアカウントでサインインしてください(図8)。

  • 図8:デバイスコード入力後

    図8:デバイスコード入力後

サインインが完了すると、待機状態であったaz login コマンドが完了します。

コマンド体系

Azure CLIのコマンド体系はおおよそ以下の通りです。az に引き続き機能グループ名を指定し、そのあと操作したい動詞を指定します。機能グループ名は多岐にわたります。後述するヘルプにて、すべてを確認できます。

az 機能グループ名… 動詞

代表的な動詞については以下の通りです(表5)。

表5 Azure CLIコマンドの動詞

動詞 意味
create 作成する
delete 削除する
list 一覧を表示する
show 詳細を表示する
update 更新する

オプション体系はLinuxの慣例通り -- (ハイフン2つ)で長いオプション名、- (ハイフン1つ)で短いオプション名です。また、-h オプションを付けることで、常にヘルプを表示できますので、詳細はヘルプを参照してください(リスト10)。

[リスト10]ヘルプの表示方法例

az -h
az vm -h
az vm create -h

また、既定のコマンドの出力結果はJSONになっています。これらのフォーマットを変更したい場合、--outputオプション(もしくは-o)にて変更することができます(表6)。

表6 ouputオプションに指定可能な出力形式

オプション 意味
json JSON文字列。既定です。
jsonc 色付けされたJSON文字列。
table 表形式
tsv タブ区切り

仮想マシンを作成する

ここでは、Azure CLIを使って仮想マシンを作成しますが、Linuxの仮想マシン作成してみましょう。作成する仮想マシンのパラメーターは以下の通りです(表7)。

表7 仮想マシンのパラメーター一覧

リソース 名前
ロケーション 東日本
リソースグループ名 mynavi2
仮想マシン名 mynavi-vm2
仮想マシンのOS Ubuntu Linux
仮想マシンのサイズ Basic_A1
仮想ネットワーク mynavivnet2 10.0.0.0/16
サブネット subnet 10.0.0.1/24

最終的なLinux VM作成後のポータル画面は以下の通りです(図9)。

  • 図9:Linux VM作成後のポータル画面

    図9:Linux VM作成後のポータル画面

はじめに、az group create コマンドでリソースグループを作成します(リスト11)。

[リスト11]リソースグループの作成

az group create --name mynavi2 --location japaneast

次に仮想ネットワークを作成します(リスト12)。

[リスト12]仮想ネットワークの作成

az network vnet create --resource-group mynavi2 --name mynavivnet2 --address-prefix 10.0.0.0/16 --subnet-name subnet --subnet-prefix 10.0.0.0/24

最後に仮想マシンを作成します(リスト13)。作成結果のpublicIpAddressが仮想マシンへの接続IPアドレスとなります。

[リスト13]仮想マシンの作成

user@mypc:~$ az vm create --resource-group mynavi2 --name mynavi-vm2 --image UbuntuLTS --admin-username azureuser --generate-ssh-keys
{
  "fqdns": "",
  "id": "/subscriptions/2399f90b-a4c8-4e60-ad23-6708f2149c6b/resourceGroups/mynavi2/providers/Microsoft.Compute/virtualMachines/mynavi-vm2",
  "location": "japaneast",
  "macAddress": "00-0D-3A-51-9C-06",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "40.115.140.57",
  "resourceGroup": "mynavi2",
  "zones": ""
}

--imageオプションに指定できるイメージ名は、PowerShellと同じく表3となります。また、--generate-ssh-keys オプションを指定することで、自動的にSSH公開鍵ファイルと秘密鍵ファイルを作成できます。ファイルは、~/.ssh ディレクトリに格納されますが、ディレクトリに既に鍵ファイルが存在している場合は、既存の鍵が利用されます。

最後にsshコマンドで仮想マシンの接続できれば正しく仮想マシンが作成できています(リスト14)。仮想マシン作成時に表示されるIPアドレスに置き換えて接続してください。

[リスト14]仮想マシンへのログイン

user@mypc:~$ ssh azureuser@40.115.140.57
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.15.0-1013-azure x86_64)

...

Last login: Wed Jun 13 06:56:35 2018 from XX.XX.XX.XX
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

azureuser@mynavi-vm2:~$

最後に作成したリソースを一括で削除したい場合は以下のコマンドを実行します(リスト15)。リソースグループ内のリソースは、すべて消えてしまいますのでご注意ください。

[リスト15]リソースグループの削除

az group delete --name mynavi2

まとめ

やや駆け足でしたが、両コマンドラインツールのインストールから仮想マシン作成までの一連の流れを理解していただけかたと思います。Azureポータルで操作できることは、Azure PowerShellでも、Azure CLIでもほぼ操作可能です。これを機会にコマンドラインツールでの操作を初めて見てはいかがでしょうか。

WINGSプロジェクト 森島政人 著/山田祥寛監修
<WINGSプロジェクトについて>テクニカル執筆プロジェクト(代表山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・雑誌/Web記事の執筆、講演等を幅広く手がける。一緒に執筆をできる有志を募集中