はじめに
本稿では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
ログインしたアカウントに紐づくサブスクリプションが複数ある場合、操作するサブスクリプションを選択する必要があります。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]リソースグループの作成
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 仮想マシンの操作コマンド
コマンド | 意味 |
---|---|
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のように表示されれば正しくインストールできています。
他のプラットフォームでのインストール方法は、「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)。
サインインが完了すると、待機状態であった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)。
はじめに、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記事の執筆、講演等を幅広く手がける。一緒に執筆をできる有志を募集中