IBM Cloud: BM for VPC上のESXiにVMを作成して疎通確認してみた


#1. はじめに

今回は、VMware Host ClientでVM（仮想マシン）を作成し、踏み台サーバーと通信できるところまでをやってみます。とはいえ、VMへのOS導入とかはVMware製品に慣れ親しんだ人にとっては当たり前なので、そういう手順はスキップします。ここでは、IBM Cloud固有の所のみを詳細に記載します。

#2. 作業の流れ


##2-1. VMに割り当てるAddress prefix/subnetを事前にVPCで作成しておく
今回は、`172.16.0.0/24`から構成されるsubnet(`bm-vpc-sub-172-16-0-0-24`)を事前に作成済みです。
（詳細手順は省略）

##2-2. VM用subnetに割り当てるVLAN番号を決める。

ESXiの管理用IPアドレス(=PCI interfaceのIPアドレス)は、vmk0に割り当てられています。
PCI Interfaceは**常にVLAN=0**で構成されていることに注意してください。VMネットワークは、管理用ネットワークとブロードキャストドメインを共有するべきではありません。そのため、VMはVLAN Interfaceで構成することにします。上述の`172.16.0.0/24`から割り当てるVLAN番号は今回は100とします。

##2-2. VLAN Interfaceを作成

###2-2-1. ネットワークインターフェースにて、`Create`を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/f266344d-a54e-2868-a02f-8e6b5f5bf0bf.png)

###2-2-2. ESXi上で作成したポートグループと同じVLAN IDを指定して作成。
インターフェース名は何でもいいと思いますが、私は`<PCI Interface>-<VLAN番号>-<VM名>`というルールで作っています。また、普通はVMware HAなどでVMがホスト間で移動可能であることを期待するため、`Allow interface to float`はONにしておきます。<br> <img width="50%" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/f54d2e7f-ebe7-447a-a8a3-f3afb880f03c.png">
完了すると以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/39c07990-3b2d-276d-5430-1d328df67997.png)

###2-2-3 MACアドレスの確認（DHCPを利用したい時に必要）
編集画面でMACアドレスを確認することができます。CLIでも確認可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/370d5cc7-3017-fb6f-aaa3-6c6f0af0cafe.png)

###補足. CLIを使ってIPアドレスを明示的に指定する方法
上記のようにUIから構成するとIPアドレスが指定できません。CLIにて`ibmcloud is bare-metal-server-network-interface-create`を利用すると以下のようにIPアドレスを指定することが可能です。以下は実行例です。

```
$ ibmcloud is bare-metal-server-network-interface-create 02b7-b416f1c2-63c8-4707-972d-65eb19ecb87e  --name eth0-100-guestvm2 --interface-type vlan --subnet bm-vpc-sub-172-16-0-0-24 --ip 172.16.0.254 --vlan 100 --allow-interface-to-float true

$ ibmcloud is bare-metal-server-network-interfaces 02b7-b416f1c2-63c8-4707-972d-65eb19ecb87e
Listing network interfaces of server 02b7-b416f1c2-63c8-4707-972d-65eb19ecb87e under account xxx as user xxxxxxx@xx.xxx.xxx...
ID                                          Name                Status      Type        Address        Floating IP   Interface Type   MAC address         Allowed VLANs   VLAN ID
02b7-93f72430-6c38-498f-b80c-baaff4446bd1   eth0                available   primary     10.18.0.11     -             pci              02:00:04:2C:82:0E   100             -
02b7-8d62beaf-7852-4212-a174-eb05c6ad29a8   eth0-100-guestvm1   available   secondary   172.16.0.4     -             vlan             02:00:01:2C:9D:EF   -               100
02b7-b69ab582-f439-4cf7-a5cb-c8a70579d1a1   eth0-100-guestvm2   available   secondary   172.16.0.254   -             vlan             02:00:05:2C:9D:EF   -               100

```


##2-3. VMware Host ClientでVM（ゲストOS）のポートグループを構成。

- デフォルトでは標準スイッチが構成されており、vmk0が割り当てられている`Management Network`はVLAN ID=0です。
- 先述の通り、VMのネットワークはこうした管理NWとブロードキャストドメインを共有するべきではありません。そのため、VLAN Interfaceで指定したVLAN ID=100のポートグループ（`PG-VLAN100`)を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/f5c8db29-5a2d-67e7-5bdc-2051a5b9c60c.png)


##2-4. VMware Host ClientでVMを作成

ゲストOSのISOファイルの取得方法や、そのISOファイルを使ってOSを導入する方法などの手順、VMware Toolsの導入方法などは省略します。以下に注意点を列挙します。

- Network Adapterは、先ほど作成したポートグループ(`PG-VLAN100`)に接続します。以下のようなトポロジーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/47811f0e-ca7e-727f-8f83-b6f2fa0a2717.png)
- IPアドレスは、VLAN Interfaceで割り当てられたIPアドレスを利用します。
- IPアドレスをVM上で構成する際に、固定IPとして利用するのであればESXiによって自動生成されたMACアドレスを使っても構いません。DNSは、`161.26.0.10`と`161.26.0.11`を使います。
- DHCPを使うのであれば、VLAN Interfaceで割り当てられたMACアドレスを利用するように編集します。DHCPの場合はDNSなどは自動構成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/fb35287d-23fa-2d1d-3994-df8d67a39076.png)


#3. 検証

これで踏み台サーバーのVSIから、このVMにアクセスすることができるようになります。

```
[root@syasuda-bastion-bmforvpc ~]# ping 172.16.0.4
PING 172.16.0.4 (172.16.0.4) 56(84) bytes of data.
64 bytes from 172.16.0.4: icmp_seq=1 ttl=63 time=48.1 ms
64 bytes from 172.16.0.4: icmp_seq=2 ttl=63 time=0.573 ms
64 bytes from 172.16.0.4: icmp_seq=3 ttl=63 time=0.498 ms
64 bytes from 172.16.0.4: icmp_seq=4 ttl=63 time=0.484 ms
```

Floating IP(Public IP)をこのVirtual Interfaceに関連付けることで、Public IP経由でアクセスすることも可能です。