浅草橋青空市場

Microsoft Azure のニュースや情報を中心にあれこれと

Azureのクラシックポータルで扱えなくなるサービス(予定)

Azureのクラシックポータルを操作していると、ことあるごとに「xx月xx日以後は新しいポータルのみになるよ」というメッセージが出てくるようになったので、左メニューをひととおり開いて確かめてみました。

f:id:yhara90:20171004124003p:plain

結果として、こんな感じでした。

ストレージや管理証明書、共同管理者の設定などは既に新しいポータルに移行済みですね。 いよいよ秒読みですかねぇ。

Ignite 2017 で気になったAzure新機能

Ignite 2017 にあわせて大量のAzureアップデートが発表されましたね。 こちらのリリース一覧から、自分用の後で読むリストも兼ねて気になったところをピックアップしてみました。

Cloud Platform Release Announcements for September 25, 2017 | Cloud Platform News Bytes Blog

仮想マシン関連

  • Availability Zoneが明示的に指定できるようになりました。
  • Gシリーズ、HシリーズのVMを値下げ

ネットワーク関連

  • DDoS Protection がプレビュー。
  • Traffic Managerも強化、「Real User Measurements」「Traffic View」
  • Point to Site VPNMacをサポート。
  • ロードバランサーにStandard Tierが登場、HA Portsで柔軟な設定もやりやすく。Multi-Az対応も?
  • VNet Peering がリージョン間で張れるように。リージョン間トラフィックも閉域網。
  • Azure StorageとSQL DatabaseがVNet内にエンドポイントを持てるように。
  • NSGで「Storage」「SQL」といったタグが指定できるようになった。
  • Application Security Groupsが登場、NSGより抽象的な層でグループを定義できる。

料金関連

  • Reserved VM Instances でVMが割引になります(いわゆるRI)。
  • Cloudyn が「Cost Management」となって無料で使えます(コスト管理)。

その他

  • Azure Batch のレンダリングサービスがGAしました。
  • Azure Cloud SHellにPowerShellが登場、コマンドレットもちょっと短く。
  • Azure Data Box がリミテッドプレビュー(いわゆるSnowball的なアプライアンス?)
  • Azure Files Sync がプレビュー。ファイルサーバーにエージェントを入れるとティアリングしてくれるもの。
  • Azure ML Workbenchが登場、クロスプラットフォームIDE的アプリ、作ったモデルをDocker Imageとして出力できる。

たくさんありますねー。

クラシックのAzure Backup をリソースマネージャーにアップグレードする

既に「2017年10月31日に自動的にアップグレードされるよ」とアナウンスされている件ですが、都合により手動でアップグレードしてみました。アナウンスはこちら。

azure.microsoft.com

手順はこちらの記事にあるとおりなので、差分というかハイライトだけ。

docs.microsoft.com

  • 「アップグレードする前に」の記述はよく読んでから始めましょう。
  • Azure PowerShell を最新化しましょう。手順は.msi での更新を案内していますが、Web Platform Installer を使った人はそちらから。
  • 手順のサイトからリンクされている .ps1 をダウンロードして実行します。ファイルはこれ → https://aka.ms/vaultupgradescript2
  • アップグレード中はプログレスバーが出たりしてプロンプトが占有されますのでご注意を。
  • アップグレード後、バックアップポリシー内のタイムゾーンがブランクの状態だったので、念のため指定した方がよさそうです。

実行するコマンドはこんな感じです。

RecoveryServicesVaultUpgrade-1.0.2.ps1 -SubscriptionID [サブスクリプションID] -VaultName "バックアップコンテナー名:" -Location "ロケーション" -ResourceType BackupVault -TargetResourceGroupName "アップグレード後のリソースグループ名"

タイムゾーンの件はこんな感じ。手元の環境では一応JSTでジョブが実行されていたようです。自動アップグレードの時はどうなるんでしょうね。 f:id:yhara90:20170828221924p:plain

(追記)

新しい Recovery Services はバックアップの「Pre-Check」が行われるようで、今回の環境であれば「VMのエージェントが最新版じゃない」ってwarningが出てました。クラシックのAzure Backupを使っている環境だとエージェントも古いままということもそれなりにありそうなので、この機会に更新しておきましょう。

f:id:yhara90:20170829003238p:plain

f:id:yhara90:20170829003334p:plain

Pre-Check についてはこちらのアナウンスをどうぞ。

azure.microsoft.com

Linuxのエージェント更新はこちらから。タイトルはGitHubとなってますが、中身はapt-getやyumの手順です。

docs.microsoft.com

Azure CLI 2.0 で仮想マシンのイメージを作る & イメージから仮想マシンを作る

少し手を加えた仮想マシンをイメージ化して展開、みたいなことをAzure CLI 2.0で行う手順です。

CLIによる仮想マシンの作り方はこちらからどうぞ。

asazure.hatenablog.jp

例によってAzure Cloud Shellを使います。

docs.microsoft.com

サブスクリプションの選択

(2017/08/01 追記)
複数のサブスクリプションを扱っている場合には明示的に指定した方が間違いが無いですね。

# 利用可能なサブスクリプションの一覧を見る
az account list -o table

# サブスクリプションを選択する
az account set --subscription [Subscription Id]

(追記ここまで)

仮想マシンのイメージを作る

対象のホストにログインしてdeprovisionを行います。 イメージ化(=汎用化)の前準備で、以下の設定が消えますのでご留意のほど。

  • 全てのSSHホストキー
  • /etc/resolv.conf 内のネームサーバー構成
  • /etc/shadow のrootパスワード
  • キャッシュされたDHCPクライアントのリース
  • ホスト名を localhost.localdomain にリセット

waagentのdeprovisioningオプションについて詳しくはこちらから。

docs.microsoft.com

sudo waagent -deprovision+user -force

この後はすべてAzure CLI上での操作です。
汎用化した後は起動できなくなりますのでご注意を。起動できなくなると困る場合は、先に仮想マシンを複製しましょう(末尾に参考URL記載)。

# 仮想マシンの停止
az vm deallocate --resource-group myRg --name myVm

# 仮想マシンの汎用化
az vm generalize --resource-group myRg --name myVm

# イメージの生成
az image create --resource-group myRg --name myImage --source myVm

イメージが生成できたら、元の仮想マシンは削除しても構いません。

イメージから仮想マシンを作る

続いてイメージから仮想マシンを作ります。 NICと、それに紐付く諸々はあらかじめ用意されている前提です。諸々の生成についてはこちらをどうぞ。 http://asazure.hatenablog.jp/entry/2017/07/31/213107

セキュリティグループとPublic IP、VNETはNICの側で指定しますので、仮想マシン生成時には指定できません。

# 仮想マシンの生成 (パスワード認証)
az vm create --name myVm --resource-group myRg --location japaneast --image myImage --size Standard_DS1 --nics myNic --admin-username myAdminName--admin-password myAdminPassword

# 仮想マシンの生成 (公開鍵認証)
az vm create --name myVm --resource-group myRg --location japaneast --image myImage --size Standard_DS1 --nics myNic --admin-username myAdminName--ssh-key-value ~/.ssh/id_rsa.pub

(参考) 汎用化しない仮想マシンの複製

そのままコピーする場合はこちらをどうぞ。Managed Disksを複製して、NIC等のリソースは新しく用意して作る手順です。Managed Disksのおかげでだいぶシンプルになりましたね。

docs.microsoft.com

Azure CLI 2.0 から手作業でVMを作る

ググると古い情報がヒットしたりしていまいち探しづらい気がしたのでまとめてみました。
イメージの元にするような用途を想定して、パブリックIPアドレスが1つだけ付いてsshができるLinux仮想マシンを立ち上げるところまで。ポータル上から使える Azure Cloud Shell から Azure CLI 2.0 を使います。

Azure Cloud Shell の使い方はこちらから。

docs.microsoft.com

ワンライナーで簡単に作るにはこちらの手順をどうぞ。

docs.microsoft.com

テンプレ用であればこのワンライナーでも事足りるのですが、今回は動作を理解することも兼ねているのと「名前を付けられるものには付けておきたいよね」ということで、暖かみを感じられる手組でやってみましょう。

サブスクリプションの選択

(2017/08/01 追記)
複数のサブスクリプションを扱っている場合には明示的に指定した方が間違いが無いですね。

# 利用可能なサブスクリプションの一覧を見る
az account list -o table

# サブスクリプションを選択する
az account set --subscription [Subscription Id]

(追記ここまで)

リソースグループの作成

az group create --name [リソースグループ名] --location [ロケーション]

既存のリソースグループを使う場合には不要です。
ロケーションの指定は、特に何も無ければjapaneastかjapanwestあたりで構わないかと思います。ロケーション一覧の取得方法は末尾に。
リソースグループのロケーションと中に入れるリソースのロケーションを別にすることもできますが、見た目としても分かりづらいですし、JSONのテンプレートからデプロイするようなときには「リソースグループと同じ場所」という指定をすることも多いので、できるだけ揃えた方が良いと思います。

仮想ネットワークの作成

シンプルにサブネットが1つだけある仮想ネットワークを作ります。

az network vnet create --name [仮想ネットワーク名] --resource-group [リソースグループ名] --location [ロケーション] --address-prefix [仮想ネットワークのアドレス帯/マスク] --subnet-name [サブネット名] --subnet-prefix [サブネットのアドレス帯/マスク]

()
az network vnet create --name myVnet --resource-group myRg --location japaneast --address-prefix 192.168.0.0/16 --subnet-name subnet1 --subnet-prefix 192.168.1.0/24

パブリックIPアドレスの作成

クラシック仮想マシンの時代はIPアドレスを確保する方法や割り当て状況によって料金が違っていたのですが、いまは確保する毎に一律で料金がかかるようなので、オプションはお好みで指定して大丈夫です。

az network public-ip create --name [IPアドレス名] --resource-group [リソースグループ名] --location [ロケーション] --allocation-method [割り当て方法(動的/静的)] --dns-name [DNS名]

()
az network public-ip create --name myPip --resource-group myRg --location japaneast --allocation-method static --dns-name myVm1

セキュリティグループとルールの作成

1行目でセキュリティグループを作成して、2行目でルールを設定しています。
例ではssh用にインバウンドの22番ポートを開放しています。

az network nsg create --name [セキュリティグループ名] --resource-group [リソースグループ名] --location [ロケーション]
az network nsg rule create --name [ルール名] --nsg-name [セキュリティグループ名] --resource-group [リソースグループ名] --access [Allow/Deny] --protocol [Tcp/Udp] --direction [Inbound/Outbound] --priority 1000 --source-address-prefix [Internet/発信元アドレス] --source-port-range ["*"/発信元ポート] --destination-address-prefix ["*"/宛先アドレス] --destination-port-range ["*"/宛先ポート]

()
az network nsg create --name myNsg --resource-group myRg --location japaneast
az network nsg rule create --name ssh --nsg-name myNsg --resource-group myRg --access allow --protocol Tcp --direction Inbound --priority 1000 --source-address-prefix Internet --source-port-range "*" --destination-address-prefix "*" --destination-port-range 22

NICの作成と仮想ネットワークへの接続、セキュリティグループやIPアドレスの割り当て

今まで作ったものをまとめてくっつけながらNICを生成します。
プライベートIPアドレスは、オプションを指定しなければ動的になります。ここも費用には関係しませんのでお好みで(どちらも無料)。 本番用だと、LBへの接続もここで行います。

az network nic create --name [NIC名] --resource-group [リソースグループ名] --vnet-name [NICを接続する] --subnet [サブネット名] --network-security-group [セキュリティグループ名] --public-ip-address [IPアドレス名] --private-ip-address [プライベートIPアドレス(固定する場合)]

()
az network nic create --name myNic --resource-group myRg --vnet-name myVnet --subnet subnet1 --network-security-group myNsg --public-ip-address myPip --private-ip-address 192.168.1.5

仮想マシンの作成

ここまでに作ったリソースを元にして仮想マシンを作成します。
この例ではAzure側で用意されているイメージから作っています。イメージ名には自作イメージも指定できます。
デフォルトで Managed Disks で作られます。オプションで明示的に指定するとUnmanaged Disksで作れますが、Managed Disksに流行って欲しいのでそちらは割愛。

az vm create --name [仮想マシン名] --resource-group [リソースグループ名] --location [ロケーション] --image [イメージ名] --size [仮想マシンのサイズ] --nics [NIC名] --admin-username [OSユーザー名] --admin-password [OSパスワード]

az vm create --name myVm1 --resource-group myRg --location japaneast --image UbuntuLTS --size Standard_DS1 --nics myNic --admin-username adminuser --admin-password admin.password

あとは完成までしばらくお待ち下さい。Linuxであれば1~2分程度でデプロイ完了です。
パスワードでは無く公開鍵認証を行う場合は「–admin-password」の代わりに「–ssh-key-value ~/.ssh/id_rsa.pub」のように公開鍵を指定して下さい。

おまけ: 各種一覧の取得方法

仮想マシンサイズの一覧はこんな感じで取得出来ます。ロケーションの指定は必須です。

az vm list-sizes --location japaneast -o table

使えるイメージの一覧はこんな感じで取得出来ます。

# ざっくり新しめのイメージを表示
az vm image list -o table

# 利用可能な全てのイメージを表示 ※非常に時間がかかります
az vm image list --all -o table

# パブリッシャーがマイクロソフトの東日本にあるUbuntuのイメージ全て
az vm image list --offer Ubuntu --all --location japaneast --publisher Microsoft -o table

使えるロケーション一覧の取得はこちらから。カレントのサブスクリプションで利用できるロケーションの一覧が表示されます。

az account list-locations -o table

今回は割愛しますが、オリジナルイメージの作り方はこちら。 https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/capture-image

Azure Container Instances が登場しましたね

急に登場したような気がするのですが「Azure Container Instances」のパブリックプレビューが始まっていました。 ホストVM無しでいきなりコンテナが動かせるというもの。また楽しそうなサービスが増えてしまいましたね。

azure.microsoft.com

既にいくつも日本語の記事が投稿されて、盛り上がってますね。

Azure Container Instances | ブチザッキ

Azure Container Instances は Hypervisor レベルでの分離を備えた次世代のコンテナ実行環境 - しばやん雑記

Azure Container Instances が出た! - 世界のやまさ

何番煎じか分かりませんが、自分用のメモも兼ねて記録しておきます。

対応リージョンは West US, East, US, West Europe の3つ。東南アジアもまだのようですね。

料金体系はこちら。 作成リクエスト毎に料金がかかるほか、メモリはGB/秒で、CPUはコア/秒で料金が発生します。メモリとCPUコア数はコンテナ作成時に指定できます。 1コア/1.5GBメモリで10,479円/月なので、立ち上げっぱなしだとVMよりだいぶ高いですね。

Pricing - Container Instances | Microsoft Azure

基本的なチュートリアルはこちらから。

Create your first Azure Container Instances container | Microsoft Docs

チュートリアルにある「aci-helloworld」程度だと数秒で起動してきます。リソースプロバイダーは「Microsoft.ContainerInstance」でした。IPアドレスも内包しており、単独のリソースとしては作られません。

オーケストレーターは含まれていません。 同時に公開された「Azure Container Instances Connector for Kubernetes」を使うと、既存のK8sクラスタのノードとしてACIを使うことができます。

いい感じにプリミティブで扱いやすそうなサービスが出てきましたね。今後が楽しみです。

Azure仮想マシンのコストパフォーマンス(Ev3, Dv3を含め)

こちらの記事の続きっぽいもの。 asazure.hatenablog.jp

Ev3、Dv3シリーズが出ましたので、カタログベースで簡単にコスパをまとめてみました。
まだ日本には来ていませんので、東南アジア(Southeast Asia)の金額です。 身の回りで使用頻度の高い、4コアのLinuxインスタンスで比較しています。

月額料金の安い順

f:id:yhara90:20170725230836p:plain

メモリ単価の安い順

f:id:yhara90:20170725230839p:plain

並べてみると、面白みはありませんがAzureの料金表ページに書いてある通りの結果になりました。
CPU性能が必要な場合は「コンピューティングの最適化」のFシリーズのお得感が際立ちます。Hyper Threadingが有効なDv3やEv3より割安なのは意外ですね。

メモリ容量が必要であれば「メモリの最適化」のEv3シリーズでしょうか。Nested Virtualization を活かしてDockerコンテナをたくさん載せたりするのに良いですかね。
DBサーバーに使う場合は、CPUやストレージ性能の高いLシリーズも良さそうです。

Markdownのテーブルだと横にはみ出して見づらかったので画像で貼りました。
テキスト版が必要な方はこちらからどうぞ。

Azure 4コアインスタンスの料金比較 · GitHub

他のサイズで比較したい場合は、そのうちこちらのサイト様が更新されるかと思いますので合わせてどうぞ。

http://azureprice.net/