Azure 仮想マシンにオンプレの常識を持ち込んで自爆する

# はじめに

さて仕事終わるぜ

![OS からシャットダウン](https://qiita-image-store.s3.amazonaws.com/0/5837/f7709de5-5336-c17a-d03c-2f94db2e9292.png)

**．．．数日後**

![破産一直線のグラフ](https://qiita-image-store.s3.amazonaws.com/0/5837/515488c4-b43e-c9bf-3d64-57f8e61fedfd.png)

おっとこれは見事な急勾配．やっちまいましたね．

本日はこんな「オンプレの環境での常識を Azure VM に持ち込んで自爆する方法」をご紹介します．

* その 1 - シャットダウン（財布の危機を招く）
* その 2 - IP アドレス固定（作業やり直しを招く）
* 他にもありますので後日書こうと思います

# その 1 - シャットダウン
冒頭の例の話です．
この話は Qiita にも複数の記事が見つかりますのであえて紹介する程の物では無いのですが．．．

Azure の場合は OS からシャットダウンを選択しても VM の課金は止まりません．
OS からシャットダウンを実行しただけでは，Azure ポータルからは以下のように表示され課金が続いていることがわかります．
OS からシャットダウンしただけの状態では Azure が割り当てているパブリック IP アドレスなどの共有リソースは確保されたままの状態となるため，利用料金が継続して発生するのです．

![停止状態](https://qiita-image-store.s3.amazonaws.com/0/5837/31b4975c-cfa8-6ef4-75be-b7b08a23b9ba.png)

## 正しいシャットダウンの方法

リソースを解放し課金を防ぐには，ポータル上から「停止」の処理を行います．OS 側でシャットダウンをせずにいきなりこちらの停止ボタンでも構いません．（その場合でも OS は正しくシャットダウンされます．）

![停止処理](https://qiita-image-store.s3.amazonaws.com/0/5837/48b92b3f-b26c-d7b7-51cc-b25d2d55b65a.png)

シャットダウンとリソースの割り当てが解除されると，状態が「割り当て解除」となります．この状態では課金は続きません．

![割り当て解除済み](https://qiita-image-store.s3.amazonaws.com/0/5837/239aac91-d510-9b36-f867-f349da04d3b7.png)


# その 2 - IP アドレス固定
IP アドレス固定したくなるとき，ありますよね．
DHCP で割り当てられた中途半端な IP アドレスではなおさら．vnet は自由に定義できるのに割当たる IP アドレスが気に食わん，修正してやるッという気持ちはお察しします．

ただそこで，いきなり VM の OS の中で IP アドレスを固定するのはお勧めしません．OS が認識する IP アドレスと Azure が認識している VM の IP アドレスが異なるため正しくルーティングできなくなるからです．

最悪 VM の再デプロイが必要となり，インスタンスストレージ内に保存してあったファイルを救出するのも面倒なことになります．こちらも費用と，それに加えて稼働に跳ね返ってきます．

![IP アドレスの設定](https://qiita-image-store.s3.amazonaws.com/0/5837/8e0e6e97-887f-6c7c-f945-f3e56fc7d561.png)

![繋がらなくなる](https://qiita-image-store.s3.amazonaws.com/0/5837/6400336d-6025-46c6-e5ab-7d8b06f52c3d.png)

ブート診断が有効であれば，コンソール画面のスクリーンショットを取得することは可能です．しかしここでは操作は一切不可能です．主がログインしてくるのを待ち続けるインスタンスのログイン画面を拝むことしか出来ません．

![コンソール画面](https://qiita-image-store.s3.amazonaws.com/0/5837/a93fb3e3-8cfc-5539-70a3-315fbb409e6b.png)

こうなってはお手上げです．
VM の再起動を伴いますが後述の手順で Azure 側で先ほど設定した IP アドレスを払い出すようにネットワーク設定を変更する，もしくは VM の再デプロイで VM を正しい状態に戻してから後述の IP アドレスを静的に割り当てるようにしましょう．

## VM に静的に IP アドレスを割り当てる方法
OS の設定は DHCP のままに設定しておき，Azure ポータル（もしくは CLI）から割り当てる IP アドレスを指定します．

![VM 内は DHCP のまま](https://qiita-image-store.s3.amazonaws.com/0/5837/e034a405-c785-0bbc-c812-36c73654d622.png)

「VM」➡「ネットワーク」➡「ネットワークインターフェイス」➡「IP 構成」➡設定対象のインタフェイス の順に辿り，「プライベート IP アドレスの設定」にて任意の IP アドレスを指定します．

![VM の IP アドレスの設定](https://qiita-image-store.s3.amazonaws.com/0/5837/96d7e5ec-8487-3a04-de10-989186ec4ce2.png)

ネットワークインタフェイスの設定を変更すると VM が再起動されます．
再起動完了後に NIC の状態を確認すると，DHCP にて Azure 側で設定した IP アドレスが割り当たっていることを確認できます．


```
C:\Users\sample>ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : samplevm
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : 443eda2ctwaeljhamjmqcmyqlh.lx.internal.cloudapp.net

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . : 443eda2ctwaeljhamjmqcmyqlh.lx.internal.cloudapp.net
   Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
   Physical Address. . . . . . . . . : 00-0D-3A-51-62-35
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::900c:fa27:58b5:b038%7(Preferred)
   IPv4 Address. . . . . . . . . . . : 10.0.0.200(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Sunday, December 24, 2017 1:12:00 PM
   Lease Expires . . . . . . . . . . : Wednesday, January 30, 2154 7:42:38 PM
   Default Gateway . . . . . . . . . : 10.0.0.1
   DHCP Server . . . . . . . . . . . : 168.63.129.16
   DHCPv6 IAID . . . . . . . . . . . : 117443898
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-21-D1-55-26-00-0D-3A-51-41-89
   DNS Servers . . . . . . . . . . . : 168.63.129.16
   NetBIOS over Tcpip. . . . . . . . : Enabled
```

# 年末年始の休暇に向けて
Azure の上に VM を上げて作業している方で年末年始はお休みされる方は，特にシャットダウンにはお気を付けください．

それでは良いお年を．