Azure で FreeBSD を使う ~Azure Resource Manager での展開~

Facebooktwittermail

VM Depot で展開した FreeBSD の VM の状態を確認してみる

前回の記事の続きです。

VM Depot で FreeBSD を展開すると、Azure Service Management(ASM)で展開されます。
展開した状態を Azure ポータルから見ると、以下のようなリソース グループが 2 つできていると思います。

201603191

上の例では、”Default-Storage-JapanEast” に FreeBSD の VHD ファイルが保存されているストレージ アカウントが作成されています。VM を展開したリージョンによって、JapanEast の部分が変わります。
”ryukiybsd” の方は FreeBSD の VM が作成されていて、この名前は VM Depot で FreeBSD を展開する際に指定した名称になります。

ここで、Azure 旧ポータルの方で VM の状態を見てみます。
仮想マシンのメニューから [イメージ] を見てみると、以下のようなものが作成されていると思います。これが VM Depot から展開された、FreeBSD の VM イメージです。

201603192

[イメージ] の画面で表示されている “FreeBSD-10-2-RELEASE-amd64・・・” をクリックするとイメージの詳細画面に切り替わり、画面の下の方に VHD の情報が表示されます。この中の [場所] に書かれている VHD の URI が、VM Depot から展開された FreeBSD の OS ディスクが保存されている VHD の場所です。

201603193

この VHD をマスター イメージとして利用し、Azure Resource Manager(ARM)で展開するのが今回紹介する方法になります。マイクロソフトからは、特に理由がない限りは ARM で VM を作成することを推奨しています。ASM と ARM の違いを簡単に説明すると、ASM は Azure IaaS バージョン 1、ARM は Azure IaaS バージョン 2 という位置づけになります。

ちなみに、上の画像だと VHD が保存されている URI が画面からはみ出して、URI の最後まで文字が見えない状態になっています。この文字列の上にマウスを持っていくと、下の絵のように URI をクリップボードにコピーするためのアイコンが表示されます。これをクリックすると URI がクリップボードにコピーされます。

201603194

ARM で展開するためのストレージ アカウントを作成する

まずはリソース グループを作ります。この例では、東日本リージョンに ”ARMFreeBSD” という名前で作っています。

201603195

次に、マスター イメージとして使用する VM の VHD を、ARM で展開できるようにするためのストレージ アカウントを作ります。今回の場合は、すでに ASM で展開されている FreeBSD の VHD をマスター イメージとして使用します。下の手順で ARM のストレージ アカウントを作成し、ASM のストレージ アカウントに保存されている FreeBSD の VHD をコピーしてあげます。ARM のストレージ アカウントを作成する手順は以下の通り。

  1. 作成したリソース グループを開いて [追加] をクリック
  2. 追加するリソースのメニューが出てくるので、[ストレージ アカウント] をクリック
  3. “リソース マネージャー” を選択して、[作成] をクリック。ここで “クラシック” と “リソース マネージャー” の 2 つが表示されますが、”クラシック” が ASM での展開、”リソース マネージャー” が ARM での展開の際に指定するオプションです。

201603196

ストレージ アカウントの設定画面が表示されます。下のように、ストレージ アカウントの名称、ストレージのタイプ(お試しであれば [ローカル冗長] で良いと思います)、サブスクリプション、リソース グループ、リージョンを設定します。

201603197

その後に [作成] ボタンを押すと、最初に作成したリソース グループの中にストレージ アカウントが作成されます。

201603198

次に、VHD を保存するためのコンテナーを作ります。コンテナーとは、フォルダーのようなもので、コンテナーごとにアクセス権の設定ができます。手順は以下の通り。

  1. 作成したストレージ アカウントを開いて、[BLOB] をクリック
  2. コンテナーの追加ボタンをクリック
  3. コンテナーの名称には “vhds”、アクセスは [プライベート] を設定

201603199

その後、[作成] をクリックします。

以上で、ASM で展開済みの FreeBSD の VHD を ARM のストレージ アカウントにコピーする準備ができました。

FreeBSD の VHD を ARM のストレージ アカウントにコピーする

次は、VM Depot によって展開された FreeBSD の VHD を、上の手順で作成したストレージ アカウントにコピーします。VHD のコピーには、Azure Storage ExplorerAzCopyCloudBerry Explorer などのツールを使いますが、今回は AzCopy を使います。AzCopy は、http://aka.ms/downloadazcopy をクリックするとダウンロードできます。

AzCopy でストレージの操作を行う際には、操作するストレージ アカウント名と、ストレージにアクセスするためのアクセス キーが必要になります。アクセス キーはストレージ アカウントの [すべての設定] をクリックし、[アクセス キー] を開くと確認できます。この画面にも、アクセス キーをクリップボードにコピーするためのアイコンがついています。

2016031910

AzCopy のコマンドの構文は以下の通りです。

> AzCopy /Source:<コピー元のコンテナーの URL> /Dest:<コピー先のコンテナーの URL> /SourceKey:<コピー元のストレージ アカウントのアクセス キー> /DestKey:<コピー元のストレージ アカウントのアクセス キー> /Pattern:<ファイル名>

実際のコマンド例は、以下のようになります。

> AzCopy /Source:http://ryukiybsd.blob.core.windows.net/vmdepot-images/ /Dest:https://ryukiybsdarm.blob.core.windows.net/vhds/ /SourceKey:CO87AClMMZY9AS993FzE71AjAjVGJxxvoxIe64eOXzFxbI1GwM9Ml8MRC27ZJBzX0+eglA7k+v5JFaUMxIIBbw== /DestKey:JZJ8z8BbFlBDO80wEhygW1DRGGC3LwXRi8SN4VY+b2e/7REz0Vvndb+PcolOMFfpaYJIv7yxxv7ufOnzTiTwxg== /Pattern:”vmdepot-83802-2519441859546157125-d73ae5c5-1ed4-4a90-b2d2-7358699eb457-FreeBSD-10-2-RELEASE-amd64-x86-64.vhd”

コピーが完了すると、上の手順で作成した ARM のストレージ アカウントの vhds というコンテナーに、FreeBSD の VHD がコピーされます。

2016031911

以上で VM Depot で展開した FreeBSD の VHD をマスター イメージとして使用する準備ができました。

マスター イメージの VHD ファイルを使って新しい VM を展開する方法

マスター イメージを使って展開する方法は、大きく分けて 2 つの方法があります。

1 つ目は PowerShell/Azure Cli を使って、コマンドを打ち込むことで VM を展開する方法です。スクリプトを書くことで、きめ細やかな条件に応じた VM の展開ができるようになります。今回はスクリプトの話については触れませんが、PowerShell や Azure Cli を使った展開方法の参考情報を紹介します。下の情報のうち、「キャプチャしたイメージから新しい VM をデプロイする」 の部分のコマンドを実行することでマスター イメージが展開できます。

リソース マネージャー デプロイメント モデルで Windows 仮想マシンをキャプチャする方法
https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-windows-capture-image-resource-manager/

リソース マネージャーのテンプレートとして使用する Linux 仮想マシンをキャプチャする方法
https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-linux-capture-image-resource-manager/

2 つ目は、JSON テンプレートを使って VM を展開する方法です。今回はこの方法を使います。

ARM では、JSON テンプレートを使った展開手法(AWS になじみがある方には、「CloudFormation に相当する機能」 と言った方が分かりやすいですね)がサポートされています。展開したい仮想マシン・仮想ネットワーク・ストレージ等の構成情報をあらかじめテンプレート化しておくことにより、そのテンプレートを用いた展開を自動化したり、テンプレートを使いまわして同じような環境の作成を繰り返し行うことができます。何はともあれ、Azure ポータルを開いた後に、下のボタンをクリックしてみてください。

 

すると、こんな画面が開くと思います。この画面から必要なパラメーターを入力して各種リソースを展開することができます。

2016031912

JSON テンプレートの用途ですが、例えば、事前に作成したテンプレートから本番環境と検証環境に全く同じシステムを自動で展開するというようなシナリオで使えます。従来であれば、本番環境と検証検証でそれぞれシステムを構築する工数がかかっていたと思いますが、テンプレートを使いまわすことで手間が省けます。

今回使用するテンプレートは僕が作成したものですが、GitHub で公開していますので自由に使ってください。
https://github.com/ryukimetal/azure-sample-templates/tree/master/create-vm-from-custom-image

Azure 用の JSON テンプレートは GitHub から多数公開されています。JSON テンプレートを作成をするためのガイダンスも公開されていますので、こちらを参照してください。

Azure Quickstart Template
https://github.com/Azure/azure-quickstart-templates

Azure リソース マネージャーのテンプレートの作成
https://azure.microsoft.com/ja-jp/documentation/articles/resource-group-authoring-templates/

JSON テンプレートから FreeBSD を ARM で展開する

では、テンプレートを使って FreeBSD を ARM で展開してみます。先ほどの「Deploy to Azure」のボタンで開いたテンプレートに対して、以下の項目を入力します。

  • VIRTUALMACHINENAME:仮想マシン名を指定してください。ゲスト OS のホスト名に設定されます。
  • ADMINUSERNAME:管理者ユーザー名を指定してください。FreeBSD にログインする時に使用します。
  • ADMINPASSWORD:管理者ユーザーのパスワードを指定してください。ログイン時に使用します。
  • OSTYPE:展開する OS の種類を指定してください。FreeBSD を展開する場合は “Linux” を選択します。
  • VMSIZE:VM のサイズを指定してください。リソース グループを作成したリージョンで使用可能なマシン サイズを指定してください。
  • NICNAME:ネットワーク インターフェース名を指定してください。VM にアタッチされるネットワーク インターフェースです。
  • USERIMAGESTORAGEACCOUNTNAME:マスター イメージの VHD が保存されているストレージ アカウントを指定してください。今回の場合、VM Depot から展開した VHD を AzCopy でコピーした先の ARM のストレージ アカウントを指定します。
  • OSDISKVHDURI:マスター イメージの VHD ファイルの URI を指定してください。今回の場合、AzCopy でコピーした先の VHD の URI を指定します。
  • VIRTUALNETWORKNAME:仮想ネットワーク名を指定してください。展開する VM を配置するための仮想ネットワークが作成されます。
  • ADDRESSPREFIX:アドレス空間を指定してください。このアドレス空間が仮想ネットワークで展開されます。
  • SUBNETPREFIX:サブネットのプレフィックスを指定してください。上記のアドレス空間の範囲で指定します。
  • SUBNETNAME:サブネット名を指定してください。
  • PUBLICIPADDRESSNAME:パブリック IP アドレス名を指定してください。VM に付与されるパブリック IP アドレスの管理に使用されます。 VM へのログインは、このパブリック IP アドレス経由で行います。
  • NETWORKSECURITYGROUPNAME:ネットワーク セキュリティ グループ名を指定してください。VM への通信制御を行うために作成されます。
  • DESTINATIONPORT:RDP もしくは SSH で使用するポート番号を指定してください。VM に接続するためのポートを許可します。今回は FreeBSD の展開なので、SSH で使用する 22 を指定します。

 

パラメーターを全て入力し、各種リソースを展開するリソース グループを指定します。今回は、すでに作成済みの ARM のストレージ アカウントが保存されているリソース グループを指定しましょう。その後、法律条項に同意します。すると、以下のような画面になります。最後に [作成] ボタンを押すと、各種リソースが展開されます。

2016031913

展開が完了すると、指定したリソース グループに仮想マシン、ネットワーク インターフェース、ネットワーク セキュリティ グループ、パブリック IP アドレス、仮想ネットワークが作成されます。

2016031914

適切に各種リソースが作成されているかどうかを確認し、展開した FreeBSD に SSH でログインしてみましょう。

まとめ

  • Azure VM で仮想マシンを作成すると、Azure Service Management(ASM)もしくは Azure Resource Manager(ARM)のどちらかで展開される
  • マイクロソフトの推奨は ARM
  • ASM と ARM の違いを簡単に説明すると、ASM は Azure IaaS バージョン 1、ARM は Azure IaaS バージョン 2
  • VM Depot から FreeBSD を展開すると ASM で作成されるが、展開された VHD を ARM で再利用することが可能
  • マスター イメージの VHD から新しい仮想マシンを構築する方法は、Azure PowerShell/Azure Cli などのコマンドから構築するか、JSON テンプレートを用意して展開する
  • Azure 用の JSON テンプレートは GitHub で多数公開されている(https://github.com/Azure/azure-quickstart-templates

 

次回の FreeBSD ネタを考え中です。

Facebooktwittermail