VMware ESXi プロビジョニング後のベアメタルの設定

#目的
VMware ESXi インストール済みのサーバーをプロビジョニングしたときの初期設定を確認し、その後、使いやすいように設定変更をします。
![vmware_initial_config01.png](https://qiita-image-store.s3.amazonaws.com/0/101361/1886a55c-46fc-e1e3-985c-05b23c67f7bd.png)


#初期状態の確認
##ルーティング情報の確認
vmk0 経由でプライベート通信が可能になっており、デフォルトゲートウェイも vmk0 に設定されています。

```
[root@vmware01:~] esxcfg-route -l
VMkernel Routes:
Network          Netmask          Gateway          Interface      
10.180.29.0      255.255.255.192  Local Subnet     vmk0           
default          0.0.0.0          10.180.29.1      vmk0           
```
##VMkernel情報の確認
vmk0 が1つあり、プライベート側からのマネジメント用に設定されています。

```
[root@vmware01:~]  esxcfg-vmknic -l
Interface  Port Group/DVPort/Opaque Network        IP Family IP Address                              Netmask         Broadcast       MAC Address       MTU     TSO MSS   Enabled Type                NetStack            
vmk0       Management Network                      IPv4      10.180.29.34                            255.255.255.192 10.180.29.63    00:50:56:62:0c:af 1500    65535     true    STATIC              defaultTcpipStack   
vmk0       Management Network                      IPv6      fe80::250:56ff:fe62:caf                 64                              00:50:56:62:0c:af 1500    65535     true    STATIC, PREFERRED   defaultTcpipStack   
```

##標準仮想スイッチ情報の確認
「vSwitch0」という標準仮想スイッチに、物理NIC「vmnic0」が割り当てられています。
ポートグループは、「Management Network」のみで、通常デフォルトで入っている「VM Network」が存在していません。
「VM Network」が存在しないことによって、OVFテンプレートのデプロイ時にエラーが起こるなどの弊害があるため、あとでCLIから追加しておきます。

```
[root@vmware01:~] esxcli network vswitch standard list
vSwitch0
   Name: vSwitch0
   Class: etherswitch
   Num Ports: 1536
   Used Ports: 4
   Configured Ports: 128
   MTU: 1500
   CDP Status: listen
   Beacon Enabled: false
   Beacon Interval: 1
   Beacon Threshold: 3
   Beacon Required By: 
   Uplinks: vmnic0
   Portgroups: Management Network
```

##vmnic（物理NIC）の確認
vmnic0 がプライベート側の物理NIC、vmnic1がパブリック側の物理NICとして認識されています。

```
[root@vmware01:~] esxcli network nic list 
Name    PCI Device    Driver  Admin Status  Link Status  Speed  Duplex  MAC Address         MTU  Description                          
------  ------------  ------  ------------  -----------  -----  ------  -----------------  ----  -------------------------------------
vmnic0  0000:04:00.0  ixgbe   Up            Up            1000  Full    0c:c4:7a:bb:2d:00  1500  Intel(R) Ethernet Controller X540-AT2
vmnic1  0000:04:00.1  ixgbe   Up            Up            1000  Full    0c:c4:7a:bb:2d:01  1500  Intel(R) Ethernet Controller X540-AT2
vmnic2  0000:05:00.0  ixgbe   Up            Down             0  Full    0c:c4:7a:bb:2d:02  1500  Intel(R) Ethernet Controller X540-AT2
vmnic3  0000:05:00.1  ixgbe   Up            Down             0  Full    0c:c4:7a:bb:2d:03  1500  Intel(R) Ethernet Controller X540-AT2
vmnic4  0000:06:00.0  ixgbe   Up            Down             0  Half    0c:c4:7a:bb:2d:04  1500  Intel(R) Ethernet Controller X540-AT2
vmnic5  0000:06:00.1  ixgbe   Up            Down             0  Half    0c:c4:7a:bb:2d:05  1500  Intel(R) Ethernet Controller X540-AT2
```

#全体でやること
初期構成に加えて、以下の図のような構成にしていきます。
SSH で ESXi サーバーにログインして、設定していきます。

<img width="791" alt="vmware_initial_config02.png" src="https://qiita-image-store.s3.amazonaws.com/0/101361/af86884c-d9d7-696e-45f7-bf4b0e747b21.png">

#設定作業
##事前情報の定義
設定対象となるESXi のベアメタルサーバーの情報を最初に定義します。

```
PrivateGW=10.180.29.1
PublicIP=169.51.69.228
PublicGW=169.51.69.225
```

##ルーティング情報の追加
定義した情報に従って設定していきます。

```
esxcfg-route -a 10.0.0.0/8 $PrivateGW
esxcfg-route -a 161.26.0.0/16 $PrivateGW
```

##デフォルトゲートウェイの削除
パブリック側にデフォルトゲートウェイを設定するため、プライベート側の設定は削除します。

```
esxcfg-route -d 0.0.0.0/0 $PrivateGW
```

##標準仮想スイッチの作成
パブリック側に標準仮想スイッチを作成します。

```
esxcli network vswitch standard add -v PublicSwitch
```

##ポートグループの作成
プライベート側に「VM Network」を作成し、パブリック側にポートグループを作成します。

```
esxcli network vswitch standard portgroup add --portgroup-name="VM Network" --vswitch-name=vSwitch0
esxcli network vswitch standard portgroup add -p PublicPG -v PublicSwitch
esxcli network vswitch standard portgroup add -p PublicVMkernel -v PublicSwitch
```

##標準仮想スイッチにアップリンク（物理NIC）割り当て
先ほど作成した標準仮想スイッチにパブリックの物理NICを割り当てます。

```
esxcli network vswitch standard uplink add -u vmnic1 -v PublicSwitch
```

##Public VMkernelの追加
vmk1 として、パブリック用のvmkernelを追加します。

```
esxcfg-vmknic -a -i $PublicIP -n 255.255.255.248 -p PublicVMkernel
```

##デフォルトゲートウェイの追加
パブリック側のゲートウェイをデフォルトゲートウェイとして設定します。

```
esxcfg-route -a 0.0.0.0/0 $PublicGW
```

##パブリックNICの有効化、無効化
以下のコマンドで操作可能です。

```
esxcli network nic up -n vmnic1
esxcli network nic down -n vmnic1
```

##MTUの設定
プライベート側のジャンボフレームを有効化します。

```
esxcli network vswitch standard set -m 9000 -v vSwitch0
esxcli network ip interface set -m 9000 -i vmk0
```

#動作確認
ESXi サーバーから「google.com」にpingを打つと応答があることが確認できました。

```
[root@vmware01:~] ping google.com
PING google.com (216.58.218.238): 56 data bytes
64 bytes from 216.58.218.238: icmp_seq=0 ttl=51 time=90.850 ms
64 bytes from 216.58.218.238: icmp_seq=1 ttl=51 time=90.841 ms
64 bytes from 216.58.218.238: icmp_seq=2 ttl=51 time=90.869 ms

--- google.com ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 90.841/90.853/90.869 ms
```

#設定後の状態
##ルーティング情報
```
[root@vmware01:~]  esxcfg-route -l
VMkernel Routes:
Network          Netmask          Gateway          Interface      
169.51.69.224    255.255.255.248  Local Subnet     vmk1           
10.180.29.0      255.255.255.192  Local Subnet     vmk0           
161.26.0.0       255.255.0.0      10.180.29.1      vmk0           
10.0.0.0         255.0.0.0        10.180.29.1      vmk0           
default          0.0.0.0          169.51.69.225    vmk1           
```
##VMkernel情報
```
[root@vmware01:~] esxcfg-vmknic -l
Interface  Port Group/DVPort/Opaque Network        IP Family IP Address                              Netmask         Broadcast       MAC Address       MTU     TSO MSS   Enabled Type                NetStack            
vmk1       PublicVMkernel                          IPv4      169.51.69.228                           255.255.255.248 169.51.69.231   00:50:56:6e:7b:74 1500    65535     true    STATIC              defaultTcpipStack   
vmk1       PublicVMkernel                          IPv6      fe80::250:56ff:fe6e:7b74                64                              00:50:56:6e:7b:74 1500    65535     true    STATIC, PREFERRED   defaultTcpipStack   
vmk0       Management Network                      IPv4      10.180.29.34                            255.255.255.192 10.180.29.63    00:50:56:62:0c:af 9000    65535     true    STATIC              defaultTcpipStack   
vmk0       Management Network                      IPv6      fe80::250:56ff:fe62:caf                 64                              00:50:56:62:0c:af 9000    65535     true    STATIC, PREFERRED   defaultTcpipStack   
```

##標準仮想スイッチ情報
```
[root@vmware01:~] esxcli network vswitch standard list
vSwitch0
   Name: vSwitch0
   Class: etherswitch
   Num Ports: 1536
   Used Ports: 4
   Configured Ports: 128
   MTU: 9000
   CDP Status: listen
   Beacon Enabled: false
   Beacon Interval: 1
   Beacon Threshold: 3
   Beacon Required By: 
   Uplinks: vmnic0
   Portgroups: VM Network, Management Network

PublicSwitch
   Name: PublicSwitch
   Class: etherswitch
   Num Ports: 1536
   Used Ports: 4
   Configured Ports: 128
   MTU: 1500
   CDP Status: listen
   Beacon Enabled: false
   Beacon Interval: 1
   Beacon Threshold: 3
   Beacon Required By: 
   Uplinks: vmnic1
   Portgroups: PublicPG, PublicVMkernel
```

#参考
- [VMware ESXiのコマンドリファレンス esxcfg-route | 俺的備忘録 〜なんかいろいろ〜](https://orebibou.com/2014/06/vmware-esxi%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-esxcfg-route/)
- [esxcliコマンドメモ（vSphere6.0環境） | 九龍堂雑録](http://kowloonet.org/archives/76#i-2)
- [VMware ESXiのコマンドリファレンス esxcfg-vmknic | 俺的備忘録 〜なんかいろいろ〜](https://orebibou.com/2014/05/vmware-esxi%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-esxcfg-vmknic/)
- [コマンドラインから vSwitch の MTU を調整する](https://blog.cles.jp/item/7204)