Upload
microsoftazurejapan
View
734
Download
1
Embed Size (px)
Citation preview
1
更新履歴
2
バージョン
1.00 2015/2/28 ・初版リリース
目次
• コマンドラインツールの概要
• サービス管理API C#での呼び出し例
• Azure PowerShell による仮想マシンの作成
• Azure CLI による仮想マシンの作成
• Azure 管理 API C#での呼び出し例
3
4
コマンドラインによる Azure 管理方法
• Azure 管理ポータルと同等な操作、設定が可能(*)
• 多様なツールが用意されている
• スクリプト化することで、さまざまなタスク(自動化、
バッチなど)に対応可能
5(*)利用するツールによって異なる。コマンドラインからのみ設定可能な項目もある。
Microsoft Azure
サービス管理 REST API
Azure
管理ポータル
Azure
PowerShellAzure CLI
管理 API
ライブラリ
提供されている管理方法
6
低レイヤーのサービス管理 REST APIをベースとして、様々な管理方法が提供されている。
提供されている管理方法
7
サービス管理 REST API
• REST API で提供される 低レイヤー API
• HTTP, HTTPS のプラットフォームで利用可能
• サービス管理 REST API リファレンスhttp://msdn.microsoft.com/ja-jp/library/azure/ee460799.aspx
8
Microsoft Azure PowerShell モジュール
• PowerShell から Azure を管理するためのモジュール
• 400以上のコマンドレットを提供
• Web Platform Installer 経由で簡単インストール
9
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
Azure 管理 API ライブラリ
• サービス管理 REST API をラップするライブラリ
• .NET, Java, PHP, Node.js, Python, Ruby など各言
語に用意されている
• 独自の管理ツールを柔軟に作成可能
• サービス管理 REST API を直接利用するより、生産
性が高い
11
12
[REST] 事前準備
13
• 証明書ベースまたは、組織アカウントの認証が必要。ここでは証明書を使った方法を説明する
• サービス構成ファイルをインポートしていれば、Azure 側と、ローカル PC の証明書ストアに格納済み
• certmgr.msc を起動
[REST] 呼び出し API
14
• サービス管理 REST API リファレンス を参照http://msdn.microsoft.com/ja-jp/library/azure/ee460799.aspx
• List Cloud Services の例
[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();
[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);
[REST] レスポンス
17
• レスポンスのスキーマは各 API によって異なる。• XML の場合であれば、XML パーサーを通して解析、利用する• 以下、REST APIを呼び出した場合のレスポンス例
18
• インストールは、Web Platform Installer 経由で行う
• ヘルプの表示方法
[PS] 基本的な使用方法
19
# Azure コマンドレットの一覧
> Get-Help Azure
# コマンドレット毎の詳細
> Get-Help –Full コマンドレット名
# XXX : 動詞(Get/Set/Remove…) YYY : 対象のオブジェクト
> XXXX-AzureYYYY
# VMイメージ一覧を取得するコマンドレットの例
> Get-AzureVMImage
• 基本的なコマンド体系
[PS] アカウントの認証
20
• アカウントの認証を行うとサブスクリプションの操作が可能になる
# 認証してアカウントへ接続
> Add-AzureAccount
[PS] ストレージ アカウントの作成
21
• 仮想マシンイメージを格納するストレージ アカウントを作成し、既定のストレージ アカウントとして設定する
# ストレージアカウントの作成
> New-AzureStorageAccount –StorageAccountName ストレージアカウント名–Location "Japan West"
# 既定のストレージアカウントの設定
> $sub = Get-AzureSubscription -Current
> Set-AzureSubscription –SubscriptionName $sub.SubscriptionName–CurrentStorageAccount ストレージアカウント名
見やすさのために改行してありますが1行で入力してください (以降同じ)
赤字部分は適宜変更してください
[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
[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"
[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
25
[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
[CLI] 事前準備:Azure CLI インストール(Linux)
27
• npm コマンドで Azure CLI のインストールが可能
• 以下で配布されているhttps://www.npmjs.org/package/azure-cli
$ sudo npm install -g azure-cli
$ azure
事前準備:Azure CLI インストール(Mac)
28
• 以下から、Mac用 Azure CLIツール(dmgファイル)を取得http://go.microsoft.com/fwlink/?linkid=252249&clcid=0x409
• ファイルを開きインスールを開始すると、Node.jsとAzure CLIツールが一括してインストールされる
事前準備: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が一括してインストールされる
[CLI] 基本的な使用方法
30
# コマンド 一覧
> azure help
# コマンド毎の詳細
> azure vm --help
# XXXX : 機能名 YYYY: 操作
> azure XXXX YYYY …
# VMイメージ一覧を取得するコマンド例
> azure vm image list
• ヘルプの表示方法
• 基本的なコマンド体系
[CLI] 認証
31
• ブラウザ経由で認証し、構成設定ファイルをダウンロード &インポート
• 対話型の認証は組織アカウントにのみ対応
# 構成設定ファイルをダウンロードしてインポート
> azure account download
> azure account import foo.publishsettings
# 認証してアカウントへ接続(組織アカウントのみ)
> azure login
[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
...
[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
[CLI] 仮想マシンへのログイン
34
• TeraTerm、PuTTY などの ターミナルソフトで仮想マシンへログイン
• XXX.cluodapp.net へ 仮想マシン作成時に指定した SSH ポート番号を利用
[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
36
[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
[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);
39