blog.monophile.net

コンピュータのこととかのメモ。

山本 一彰 | Takaaki Yamamoto

山本一彰(Takaaki Yamamoto)

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

技術

Configuration Management Terraform, Ansible, Cloud-Init
Cloud Platform GCP, AWS, Azure, OpenStack
Virtualization, Container QEMU+KVM, Proxmox, Xen, LXD/LXC, Docker, Kata, systemd-nspawn
OS, Distribution Debian GNU/Linux, Ubuntu, CentOS, FreeBSD, macOS, ...
Storage Ceph, GlusterFS, ZFS, Btrfs, ...
Router Linux+Netfilter, Quagga, FRR, VyOS, Cisco IOS, YAMAHA RTX, ...
Switch Dell FTOS, AlaxalA, NETGEAR, ...
SQL MySQL, MariaDB(Galera Cluster), PostgreSQL, BigQuery, ...
NoSQL Elasticsearch, InfluxDB, etcd, MongoDB, ...
WebApps WordPress, GitLab, Redmine, ...
Monitoring Grafana, Prometheus, Nagios, Munin, Zabbix
DNS CoreDNS, dnsmasq, Unbound, BIND9, ...
Misc Kubernetes/Istio, certbot, HAProxy, ...

自称はネットワークエンジニアだが、 Linuxのネットワークと仮想化技術が得意なため、 サーバエンジニアの雰囲気のほうが強いかもしれない。

習得中

Virtualization, Container, OS VirtIO GPU, okd, CDH, CoreOS, ...
Network mVPN, Calico, IoT(6LoWPAN, LoRaWAN), ...
NoSQL BigTable, HBase, OpenTSDB, Redis, ...
Misc Test Engineering, Android Apps, ...

大きな領域では、セキュリティを考慮した複数パブリッククラウドの相互運用に興味がある。

投稿

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 のインストール

Macだと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などは出力結果をそのまま貼っておらず、別のものを生成し置き換えています。

参考