Azure Linux仮想マシンのNIC二重化(Azure CLI編)


前書き

2017/2/9現在、Azureの仮想マシンにNICを複数枚セットしようとすると、ポータル画面(ブラウザ)からは設定できず、PowerShellやAzureCLIなどを利用して仮想マシンを作成する必要があります。
今回は、Azure CLIを利用したNIC2枚刺しの仮想マシン作成を行います。

前提条件

・現在の最新イメージとなるCentOS7.3をインストールします。
・Azure CLIを利用できる環境が準備されていることを前提とします。
・ロケーションは、”japaneast”(東日本)とします。
・仮想マシン作成後のSSHログインは、パスワードによる認証方式で作成しています。
・IPアドレスは、パブリックIPアドレスも使用して固定化します。

準備

1.PowerShell、もしくはコマンドプロンプトを開いて、Azureにログインしましょう。
(管理者権限で実行してください)
# azure login -u <アカウント名>
パスワードを入力してログインしてください。

2.サブスクリプションをセットします。サブスクリプションが複数ある場合には、既定のサブスクリプションを確認してください。

<確認> # azure account list  ★ Current 列がtrue になっているものが選択されたサブスクリプションになります。
<設定> # azure account set <サブスクリプション名>

いざ!仮想マシン作成

3.リソースグループを作成します。(ポータルから作成してもOKです)

# azure group create <リソースグループ名> --location "<場所>"
sample)azure group create test_group --location "japaneast"

4.ストレージアカウントを作成します。仮想ディスクを保持します。

# azure storage account create <ストレージアカウント名> --resource-group <リソースグループ名> --location "<場所>" --kind Storage --sku-name PLRS`

<>に囲まれた部分以外は、決め打ちで問題ないです。
ストレージアカウント名は、英数字のみです。(記号はOUT)

sample) # azure storage account create storageadmin --resource-group test_group --location "japaneast" --kind Storage --sku-name PLRS

5.仮想ネットワークを作成します。

# azure network vnet create -g <リソースグループ名> -l <場所> -n <仮想ネットワーク名> -d -a <ネットワークアドレス/マスク>
sample) # azure network vnet create -g test_group -l japaneast -n test_vnet -d -a 10.1.0.0/16

なぜか、ロケーションは””で囲まれなくなりました。-l 恐るべし
-d の後ろは、既定値を利用するため、何も指定する必要ありません。
-d をつけないと「Cannot read property 'dnsSErvers' of undefined」となり、エラーになります。

6.サブネットを2つ用意します。

# azure network vnet subnet create -g <リソースグループ名> -e <仮想ネットワーク名> -n <サブネット名> -a <ネットワークアドレス/マスク>

sample) # azure network vnet subnet create -g test_group -e test_vnet -n front_subnw -a 10.1.1.0/24
sample) # azure network vnet subnet create -g test_group -e test_vnet -n back_subnw -a 10.1.2.0/24

7.仮想NICを作成して、6.で作成したサブネットにアタッチします。

# azure network nic create -g <リソースグループ名> -l <場所> -n <仮想NIC名> -m <仮想ネットワーク名> -k <サブネット名>

sample) `# azure network nic create -g test_group -l japaneast -n testNIC1 -m test_vnet -k front_subnw`
sample) `# azure network nic create -g test_group -l japaneast -n testNIC2 -m test_vnet -k back_subnw`

8.パブリックIPアドレスを予約します。

# azure network public-ip create -g <リソースグループ名> -n <予約IPアドレス名> -l <場所>

sample) # azure network public-ip create -g test_group -n nicw_ip -l japaneast

9.仮想マシンの作成

# azure vm create --resource-group <リソースグループ名> --name <仮想マシン名> --location <場所> --os-type <OSタイプ> --nic-names <1つ目の仮想NIC名>,<2つ目の仮想NIC名> --public-ip-name <パブリックIP名> --vm-size <マシンタイプ> --storage-account-name <ストレージアカウント名> --image-urn <イメージURL> --admin-username <OS管理者名>

※ 管理者パスワードの入力を2回求められます。
※ パスワードルールを守らないと次のエラーメッセージでエラーとなります。

error:   Parameter adminPassword must be at least 8 character in length, it must contain a lower case, an upper case, a number and a special character such as !@#$%^&+=

※ 仮想マシン名は、文字数字のみで、記号はOUTです。エラーになります。

****** is not a valid storage account name. Storage account name must be between 3 and 24 characters in length and use numbers and lower-case letters only.
sample) # azure vm create --resource-group test_group --name testvm --location japaneast --os-type linux --nic-names testNIC1,testNIC2 --public-ip-name nicw_ip --vm-size Standard_DS2_v2 --storage-account-name storageadmin --image-urn openlogic:CentOS:7.3:7.3.20161221 --admin-username testadmin

※ --image-urn は、# azure vm image list にて確認できます。

あとがき

変数化しないと大変ですね。
PowerShellの方がいいかもしれません。
次回、PowerShell版作成します。

参考URL