blog.monophile.net

コンピュータに関するメモ。

著者

山本一彰(Takaaki Yamamoto)

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 2015年にコンビネータ論理を基に計算完備な計算手法 "論理珠算"を開発し、 それを含む体系である"算道"を構成した。 その成果により、2016年に 第19回 文化庁メディア芸術祭 アート部門 新人賞 (文部科学大臣賞) を受賞。 現在はSRE(サイト信頼性エンジニア)として生計をたててている。

投稿

Azure CLI 2.0 で仮想マシンの作成と削除と再構成

概要

2017/4に Azure CLI 2.0 がリリースされていたようで、 これを使って仮想マシンの作成と削除と再構成をしてみた。 管理ディスクを使っている場合と非管理ディスクを使っている場合の両方で試した。

今回はすべての部品を一つ一つ作ってから、最後に組み合わせることを行った。 簡単なチュートリアルだと az vm create ... で一気に仮想マシンを作っているが、 ひとつひとつの部品の関係性を理解していないと仮想マシンの再構成は難しいと思う。 おそらくこの方が Azure を理解するのに役立つし、他の場面でも問題解決を行いやすくなるはず。

MacOS X El capitan(10.11)で行ったが、他でも Azure CLI 2.0 のインストール以外はほぼ同じ。

Azure CLI 2.0 のインストール

MacOS だと Homebrew を使うのが公式なやり方。

これで az コマンドが使えるようになる。

ソースは↑の GitHub にある。

認証

↓を実行し、 https://aka.ms/devicelogin をブラウザで開いて XXXXXXX にあたる部分を入力すれば認証は終わり。

az コマンドの設定

configureサブコマンドでazコマンドの設定ができる。 引数なしで実行するとインタラクティブに設定ができる。

設定値は ~/.azure/config に保存される。 直接編集しても良いと思う。 自分は出力形式の既定値を table にしておいた。

また、ほぼ全てのコマンドでリソースグループを指定しなければいけないが、 デフォルト値として設定しておくことも可能。 group00 をデフォルト値とするためには↓を行う。

↑を行うと ~/.azure/config に↓の行が追加されたことが確認できる。

今回はデフォルト値を設定せずに行う。

リソースグループを作成する

テスト用のリソースグループ group00 を東日本に作成する。 これ以降に作成されるリソースはすべて group00 に所属させる。

作ったばかりなので、 group00 の中身↓はまだ空っぽ。

ルートテーブルを作成する

今回は特にルーティングの設定はしないが、複数のサブネットを作成し、 ルーティングを調整したい場合は必要になる。

ネットワークセキュリティグループを作成する

ネットワークセキュリティグループ nsg00 を作成する。 ネットワークセキュリティグループは後に作られるサブネットもしくはネットワークインターフェースへ関連付けることができるが、 今回はサブネットへ関連付けることにする。

ssh を許可するルールを作成する

仮想マシンへ ssh でのログインを許可するために、 ネットワークセキュリティグループ nsg00 にインバウンドのルールを追加する。

仮想ネットワークを作成する

仮想ネットワークを作成する。 address-prefix を指定しない場合は 10.0.0.0/16 の空間が割り当てられる。

サブネットを作成する

仮想ネットワーク vnet00(10.0.0.0/16) に、サブネット subnet00(10.0.0.0/24) を作る。 この時にルーティングテーブルやセキュリティグループも設定できる。

グローバルIPアドレスを取得する

取得されたIPアドレスは table 形式だと表示されないので、出力形式を json で表示する。 jq を使うと簡単にフィルタリングできる。

ネットワークインターフェースを作成する

仮想マシンには 10.0.0.11/24 のアドレスを付与することにする。 まずは 10.0.0.11 が使えるアドレスかチェックする。

10.0.0.11 は使用可能なので、↓でアドレスを指定してネットワークインターフェースを作成する。

nic00 が作成された。

ストレージアカウントを作成する(非管理ディスクの場合)

ストレージアカウントを作成する。 これは非管理ディスクを利用する場合に必要。 今回は検証用途なので、ローカル冗長ストレージ Standard_LRS で作成する。

可用性セットを作成する

可用性セットは仮想マシン作成時に指定が可能。 仮想マシン作成後は変更が不可能。 また、管理ディスクと非管理ディスクを使う場合で可用性セットは明確に分けなければならない。 (障害ドメインの数は指定できるが、東日本の場合は実質2のみが意味を持つ値なので、デフォルトでよい。)

管理ディスクの場合は↓。

非管理ディスクの場合は↓。

ssh鍵を作成する

仮想マシンに設定するsshの秘密鍵 user00 と公開鍵 user00.pub を作成しておく。

イメージを選択する

今回は Ubuntu で作成する。 Ubuntu で検索すると↓が出てきたので Canonical:UbuntuServer:16.04-LTS:latest というイメージを使う。

仮想マシンを作成する(管理ディスクの場合)

管理ディスクの場合はストレージの種類は Standard_LRS もしくは Premium_LRS の二つから選べる。

仮想マシンを作成すると自動的に、管理ディスク vm00-os-disk も作られていることがわかる。

仮想マシンの作成が終わったら↓のようにしてユーザ名と秘密鍵を指定するとsshできる。

この状態でリソースグループ group00 内にあるリソースは↓になる。

仮想マシンを作成する(非管理ディスクの場合)

非管理ディスクを利用する場合は↓ストレージアカウントを指定する。

仮想マシンを作成すると自動的に、コンテナ vhds が作成され、 その中に非管理ディスク vm00-os-disk も作られていることがわかる。

仮想マシンの作成が終わったら↓のようにしてユーザ名と秘密鍵を指定すると ssh できる。

この状態でリソースグループ group00 内にあるリソースは↓になる。

仮想マシンを停止する

stop のみだと課金は継続されるので、deallocate する。

仮想マシンを削除する

下記で仮想マシンが削除できる。

仮想マシンを削除しても、仮想マシン vm00 以外のリソースはそのまま残る。 (↓は管理ディスクの場合。)

仮想マシンを再構成する(管理ディスクの場合)

可用性セットなどは仮想マシン作成時にのみ指定できるので、 仮想マシンを一旦削除してから仮想マシンの再構成が必要になる。 ↓のコマンドで作成した仮想マシンの再構成をしてみる。

作成した仮想マシン vm00 を削除する。

可用性セットとネットワークインターフェースとディスクとOSの種別を指定すれば再構成できる。 (すでにディスクは最初の仮想マシン作成時に初期化されているのでOSのイメージやユーザの情報は不要。)

仮想マシンを再構成する(非管理ディスクの場合)

↓のコマンドで作成した仮想マシン vm00 の再構成をしてみる。

仮想マシン vm00 に接続されている起動ディスク vm00-os-disk のURLは↓で取得できる。

仮想マシンvm00を削除した後では↑では起動ディスク vm00-os-disk のURLは取得不可能なため、↓で取得する。

仮想マシン vm00 を削除する。

管理ディスクのときと同様に可用性セットとネットワークインターフェースとディスクと OS の種別を指定すれば再構成できる。 (すでにディスクは最初の仮想マシン作成時に初期化されているので OS のイメージやユーザの情報は不要。)

リソースグループを削除する

リソースグループ group00 を削除すると、group00 に所属するすべてのリソースが削除される。

備考

仮想マシンのサイズやストレージの冗長性などの選択肢は↓で確認ができる。

※この記事で出てくるuuidなどは出力結果をそのまま貼っておらず、別のものを生成し置き換えています。

参考