39
1

S15 コマンドラインおよび API による Microsoft Azure の管理

Embed Size (px)

Citation preview

Page 1: S15 コマンドラインおよび API による Microsoft Azure の管理

1

Page 2: S15 コマンドラインおよび API による Microsoft Azure の管理

更新履歴

2

バージョン

1.00 2015/2/28 ・初版リリース

Page 3: S15 コマンドラインおよび API による Microsoft Azure の管理

目次

• コマンドラインツールの概要

• サービス管理API C#での呼び出し例

• Azure PowerShell による仮想マシンの作成

• Azure CLI による仮想マシンの作成

• Azure 管理 API C#での呼び出し例

3

Page 4: S15 コマンドラインおよび API による Microsoft Azure の管理

4

Page 5: S15 コマンドラインおよび API による Microsoft Azure の管理

コマンドラインによる Azure 管理方法

• Azure 管理ポータルと同等な操作、設定が可能(*)

• 多様なツールが用意されている

• スクリプト化することで、さまざまなタスク(自動化、

バッチなど)に対応可能

5(*)利用するツールによって異なる。コマンドラインからのみ設定可能な項目もある。

Page 6: S15 コマンドラインおよび API による Microsoft Azure の管理

Microsoft Azure

サービス管理 REST API

Azure

管理ポータル

Azure

PowerShellAzure CLI

管理 API

ライブラリ

提供されている管理方法

6

低レイヤーのサービス管理 REST APIをベースとして、様々な管理方法が提供されている。

Page 7: S15 コマンドラインおよび API による Microsoft Azure の管理

提供されている管理方法

7

Page 8: S15 コマンドラインおよび API による Microsoft Azure の管理

サービス管理 REST API

• REST API で提供される 低レイヤー API

• HTTP, HTTPS のプラットフォームで利用可能

• サービス管理 REST API リファレンスhttp://msdn.microsoft.com/ja-jp/library/azure/ee460799.aspx

8

Page 9: S15 コマンドラインおよび API による Microsoft Azure の管理

Microsoft Azure PowerShell モジュール

• PowerShell から Azure を管理するためのモジュール

• 400以上のコマンドレットを提供

• Web Platform Installer 経由で簡単インストール

9

Page 10: S15 コマンドラインおよび API による Microsoft Azure の管理

Azure クロス プラットフォーム コマンドライン インターフェイス

• JavaScript で記述された Azure を管理するコマンド

• Node.js で実行されるため、Linux/Mac OS Xなど

Windows 以外のクロス プラットフォーム環境で利用可能

• npm (Node Package Manager) 経由で簡単インストール

• Github でソース公開 (Apache License V2.0)

https://github.com/Azure/azure-xplat-cli

• Windows向け、Mac OS X 向けのインストーラも公開

• 非対応のサービスがあるので、最新情報を確認すること

10

Page 11: S15 コマンドラインおよび API による Microsoft Azure の管理

Azure 管理 API ライブラリ

• サービス管理 REST API をラップするライブラリ

• .NET, Java, PHP, Node.js, Python, Ruby など各言

語に用意されている

• 独自の管理ツールを柔軟に作成可能

• サービス管理 REST API を直接利用するより、生産

性が高い

11

Page 12: S15 コマンドラインおよび API による Microsoft Azure の管理

12

Page 13: S15 コマンドラインおよび API による Microsoft Azure の管理

[REST] 事前準備

13

• 証明書ベースまたは、組織アカウントの認証が必要。ここでは証明書を使った方法を説明する

• サービス構成ファイルをインポートしていれば、Azure 側と、ローカル PC の証明書ストアに格納済み

• certmgr.msc を起動

Page 14: S15 コマンドラインおよび API による Microsoft Azure の管理

[REST] 呼び出し API

14

• サービス管理 REST API リファレンス を参照http://msdn.microsoft.com/ja-jp/library/azure/ee460799.aspx

• List Cloud Services の例

Page 15: S15 コマンドラインおよび API による Microsoft Azure の管理

[REST] 証明書の取得

15

• 証明書の取得例ユーザの個人証明書ストアからサムプリントを元に、X509 証明書のオブジェクトを取得

// 証明書の取得

var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);

store.Open(OpenFlags.ReadOnly);

var collection = store.Certificates.Find(X509FindType.FindByThumbprint,

"証明書のサムプリント", false);

var x509 = collection[0];

store.Close();

Page 16: S15 コマンドラインおよび API による Microsoft Azure の管理

[REST] API の呼び出し

16

• API にはバージョンが存在するため、x-ms-version ヘッダをつける

• サービス管理のバージョン管理http://msdn.microsoft.com/ja-jp/library/azure/gg592580.aspx

// URLの設定

var subscriptionId = "021fe701-c78f-5b7f-9ae4-5666f7acebaf";

var url = string.Format("https://management.core.windows.net/{0}/services/hostedservices", subscriptionId);

// 証明書の追加

var handler = new WebRequestHandler();

handler.ClientCertificates.Add(x509);

// REST APIの呼び出し

var client = new HttpClient(handler);

client.DefaultRequestHeaders.Add("x-ms-version", "2014-06-01");

var response = await client.GetStringAsync(url);

Page 17: S15 コマンドラインおよび API による Microsoft Azure の管理

[REST] レスポンス

17

• レスポンスのスキーマは各 API によって異なる。• XML の場合であれば、XML パーサーを通して解析、利用する• 以下、REST APIを呼び出した場合のレスポンス例

Page 18: S15 コマンドラインおよび API による Microsoft Azure の管理

18

Page 19: S15 コマンドラインおよび API による Microsoft Azure の管理

• インストールは、Web Platform Installer 経由で行う

• ヘルプの表示方法

[PS] 基本的な使用方法

19

# Azure コマンドレットの一覧

> Get-Help Azure

# コマンドレット毎の詳細

> Get-Help –Full コマンドレット名

# XXX : 動詞(Get/Set/Remove…) YYY : 対象のオブジェクト

> XXXX-AzureYYYY

# VMイメージ一覧を取得するコマンドレットの例

> Get-AzureVMImage

• 基本的なコマンド体系

Page 20: S15 コマンドラインおよび API による Microsoft Azure の管理

[PS] アカウントの認証

20

• アカウントの認証を行うとサブスクリプションの操作が可能になる

# 認証してアカウントへ接続

> Add-AzureAccount

Page 21: S15 コマンドラインおよび API による Microsoft Azure の管理

[PS] ストレージ アカウントの作成

21

• 仮想マシンイメージを格納するストレージ アカウントを作成し、既定のストレージ アカウントとして設定する

# ストレージアカウントの作成

> New-AzureStorageAccount –StorageAccountName ストレージアカウント名–Location "Japan West"

# 既定のストレージアカウントの設定

> $sub = Get-AzureSubscription -Current

> Set-AzureSubscription –SubscriptionName $sub.SubscriptionName–CurrentStorageAccount ストレージアカウント名

見やすさのために改行してありますが1行で入力してください (以降同じ)

赤字部分は適宜変更してください

Page 22: S15 コマンドラインおよび API による Microsoft Azure の管理

[PS] 仮想マシンイメージの選択

22

• 仮想マシンイメージは、Get-AzureVMImage から取得

• 取得したデータの ImageName プロパティがイメージ名

# 仮想マシンイメージ名の取得 (Win2012R2 最新日付け)

> $image = @(Get-AzureVMImage | Sort-Object -Descending PublishedDate | Where-Object { $_.Label -like "Windows Server 2012 R2*" })

# イメージ名確認

> Write-Output $image[0].ImageName

a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201410.01-en.us-127GB.vhd

# イメージの一覧を表示

> Get-AzureVMImage | Out-GridView

Page 23: S15 コマンドラインおよび API による Microsoft Azure の管理

[PS] 仮想マシンの簡易作成

23

• New-AzureQuickVM で仮想マシンの簡易作成

• Get-AzureVM で “ReadyRole” と表示されれば準備完了

• Get-AzureRemoteDesktopFile で RDPファイルを取得し接続

# VMの簡易作成

> New-AzureQuickVM -ServiceName azurestudy02 -Name azurestudy02 -Windows -AdminUsername azureuser -Password Password1!-Location "Japan West" -ImageName $image[0].ImageName

# VMの状態確認

> Get-AzureVM

# リモートデスクトップ接続ファイルの取得

> Get-AzureRemoteDesktopFile -ServiceName azurestudy02 -Name azurestudy02-LocalPath "c:¥temp¥vm.rdp"

Page 24: S15 コマンドラインおよび API による Microsoft Azure の管理

[PS] 仮想マシンの停止、リブート、削除

24

• Stop/Restart/Remove で それぞれ仮想マシンの停止、リブート、削除が可能

• 停止後、VMの状態が ”StoppedDeallocated” になっていれば、課金されない

# VMの停止(IPなどリソース解放される)

> Stop-AzureVM -ServiceName azurestudy02 -Name azurestudy02

# VMのリブート

> Restart-AzureVM -ServiceName azurestudy02 -Name azurestudy02

# VMとVHDの削除

> Remove-AzureVM –ServiceName azurestudy02 –Name azurestudy02 -DeleteVHD1

Page 25: S15 コマンドラインおよび API による Microsoft Azure の管理

25

Page 26: S15 コマンドラインおよび API による Microsoft Azure の管理

[CLI] 事前準備:Node.js インストール

26

• Linux ティストリビューションによって Node.js の対応状況が異なる

• Windows, Mac OS X は、MS 提供の CLI のインストーラを利用すると Node.js が同梱されているため、Node.js のインストールは不要

# CentOS の場合は、EPL リポジトリを利用する

$ sudo yum install epel-release

$ sudo yum install nodejs npm

$ node -v

v0.10.30

# Ubuntu の場合は、標準で提供されているがコマンド名を変更する必要がある

$ sudo apt-get update

$ sudo apt-get install nodejs npm

$ sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

$ node -v

v0.10.25

Page 27: S15 コマンドラインおよび API による Microsoft Azure の管理

[CLI] 事前準備:Azure CLI インストール(Linux)

27

• npm コマンドで Azure CLI のインストールが可能

• 以下で配布されているhttps://www.npmjs.org/package/azure-cli

$ sudo npm install -g azure-cli

$ azure

Page 28: S15 コマンドラインおよび API による Microsoft Azure の管理

事前準備:Azure CLI インストール(Mac)

28

• 以下から、Mac用 Azure CLIツール(dmgファイル)を取得http://go.microsoft.com/fwlink/?linkid=252249&clcid=0x409

• ファイルを開きインスールを開始すると、Node.jsとAzure CLIツールが一括してインストールされる

Page 29: S15 コマンドラインおよび API による Microsoft Azure の管理

事前準備:Azure CLI インストール(Win)

29

• 以下からWeb Platform Installerをインストールし実行する。http://www.microsoft.com/web/downloads/platform.aspx

• Microsoft Azure Cross-platform Command Line Tools を選択してインストール。Node.jsとAzure CLIが一括してインストールされる

Page 30: S15 コマンドラインおよび API による Microsoft Azure の管理

[CLI] 基本的な使用方法

30

# コマンド 一覧

> azure help

# コマンド毎の詳細

> azure vm --help

# XXXX : 機能名 YYYY: 操作

> azure XXXX YYYY …

# VMイメージ一覧を取得するコマンド例

> azure vm image list

• ヘルプの表示方法

• 基本的なコマンド体系

Page 31: S15 コマンドラインおよび API による Microsoft Azure の管理

[CLI] 認証

31

• ブラウザ経由で認証し、構成設定ファイルをダウンロード &インポート

• 対話型の認証は組織アカウントにのみ対応

# 構成設定ファイルをダウンロードしてインポート

> azure account download

> azure account import foo.publishsettings

# 認証してアカウントへ接続(組織アカウントのみ)

> azure login

Page 32: S15 コマンドラインおよび API による Microsoft Azure の管理

[CLI] 仮想マシンイメージの選択

32

• azure vm image list で一覧取得grep 等でフィルタリングし、目的のイメージ名(赤字部分)を取得

• 詳細情報は、--json オプションをつけて JSON 出力すること

# VMイメージ一覧の取得

> azure vm image list | grep "Ubuntu-14"

...

data: b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_1-LTS-amd64-server-20140927-en-us-30GB Public Linux

...

Page 33: S15 コマンドラインおよび API による Microsoft Azure の管理

[CLI] 仮想マシンの作成

33

• azure vm create で 仮想マシン作成ストーレジ アカウントは、自動作成

• azure vm list で “ReadyRole” と表示されれば準備完了

# 日本西リージョン、サイズ:S、 SSH:61023 ポート で Ubuntu Linux を作成

> image=b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_1-LTS-amd64-server-20140927-en-us-30GB

> azure vm create --vm-size Small --ssh 61023 --vm-name azurestudy02 --location 'japan west' azurestudy02$image azureuser 'Password1!'

info: Executing command vm create

+ Looking up image b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_1-LTS-amd64-server-20140927-en-us-30GB

+ Looking up cloud service

info: cloud service azurestudy02 not found.

+ Creating cloud service

+ Retrieving storage accounts

+ Creating a new storage account 'azurestudy02141465993937'

+ Creating VM

info: vm create command OK

# VMの状態を表示

> azure vm list

Page 34: S15 コマンドラインおよび API による Microsoft Azure の管理

[CLI] 仮想マシンへのログイン

34

• TeraTerm、PuTTY などの ターミナルソフトで仮想マシンへログイン

• XXX.cluodapp.net へ 仮想マシン作成時に指定した SSH ポート番号を利用

Page 35: S15 コマンドラインおよび API による Microsoft Azure の管理

[CLI] 仮想マシンの停止、リブート、削除

35

• shutdown/restart/delete でそれぞれ仮想マシンの停止、リブート、削除が可能

• 停止後、VM の状態が ”StoppedDeallocated” になっていれば、課金されない

# VMの停止(IPなどリソース解放される)

> azure vm shutdown azurestudy02 azurestudy02

# VMのリブート

> azure vm restart azurestudy02 azurestudy02

# VMとVHDの削除

> azure vm delete --blob-delete azurestudy02 azurestudy02

Page 36: S15 コマンドラインおよび API による Microsoft Azure の管理

36

Page 37: S15 コマンドラインおよび API による Microsoft Azure の管理

[Mgmt API] 事前準備

37

• 認証はREST APIと同様に、証明書または、組織アカウントを利用でき

る。ここでは証明書を使った方法を説明する

• ライブラリはNuget経由等でインストールする

https://www.nuget.org/packages/Microsoft.WindowsAzure.Man

agement.Libraries

• リファレンスは以下を参照

http://msdn.microsoft.com/en-

us/library/dn602775(v=azure.11).aspx

Page 38: S15 コマンドラインおよび API による Microsoft Azure の管理

[Mgmt API] API呼び出し

38

• 証明書の取得はREST API部分を参照• 操作するコンポーネント毎にクラスが用意されている• 以下はクラウドサービスの情報を取得する例

// URLの設定

var subscriptionId = "021fe701-c78f-5b7f-9ae4-5666f7acebaf";

var creds = new CertificateCloudCredentials(subscritionId, x509[0]);

var client = CloudContext.Clients.CreateComputeManagementClient(creds);

var hs = client.HostedServices.Get("azurestudy02");

Console.WriteLine("Name : " + hs.ServiceName);

Console.WriteLine("Label : " + hs.Properties.Label);

Console.WriteLine("Location : " + hs.Properties.Location);

Console.WriteLine("Status : " + hs.Properties.Status);

Page 39: S15 コマンドラインおよび API による Microsoft Azure の管理

39