nutanixをインストールして、Cloud-Initしてみるまで

# nutanixをインストールして、Cloud-Initしてみるまで

## はじめに

社内環境に検証サーバーを追加するのにあたり、使ったことがないハイパーバイザー使ってみようという話になり、nutanixをインストールしてみました。

このドキュメントには、インストーラーのダウンロードから、シングルノードクラスタを作成し、CloudーInitでVMを作成するまでの過程。

インストール時に発生したトラブル等をまとめてあります。

おおきなシステムなので、下の書籍に目を通し、概念だけでも頭に入れて置いた方が分かりやすいかも…（あとから読んだ人）

https://www.shoeisha.co.jp/book/detail/9784798160573

# install

- インストール前にやっておく事
  - CE 2.0 Download & USBの作成
  - CEのライセンス登録
- CE 2.0のインストーラー通りにインストール
  - ネットワーク設定
  - ディスク指定
  - ライセンス同意
- 自動で初期セットアップが行われるため待機　AHV起動→初回セットアップ(firstboot)
- clusterの作成（single nodeにチェックを入れていると自動）
  - clusterコマンドでcluster作成
- web consoleから初期設定
  - CEライセンス認証
  - ディスク設定・DNS設定・VLAN他（必要ならば）


以下の手順に従い、インストールをしていきます。

公式

https://portal.nutanix.com/page/documents/details?targetId=Nutanix-Community-Edition-Getting-Started-v2_0:Nutanix-Community-Edition-Getting-Started-v2_0

とても参考になった個人ブログ

https://blog.ntnx.jp/entry/2020/02/24/152143

## インストーラーの準備 & インストールUSB作成、（アカウントに）ライセンス登録

参考：[Nutanix CE 環境構築の流れ。（2020 年版）](https://blog.ntnx.jp/entry/2020/02/24/152143#1-Nutanix-Community-%E3%81%AE%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E4%BD%9C%E6%88%90)

[Nutanix Next Community Download Software.](https://next.nutanix.com/discussion-forum-14/download-community-edition-38417)
を開き、必要なisoファイルをダウンロードします。

ログインしていないと、下の様な画面が表示されるため、アカウントの作成・ログインして開きます。

また、Prism（WEBコンソール）設定時にライセンス認証が必要となるので、それも行っておきます。

たとえば、この記事を書いている時だと、インストーラーは`phoenix-ce2.0-fraser-6.5.2-stable-fnd-5.3.4-x86_64.iso`

![5bb1e61a979507a55624c7e8d91dd3065f528a743aaeb92e39ca2a26a8a8bb7b.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472791/1bcb5884-189d-7ec0-c15f-5ed7c1e3570c.gif)


---

## USB作成

参考：[Preparing to Install Community Edition](https://portal.nutanix.com/page/documents/details?targetId=Nutanix-Community-Edition-Getting-Started-v2_0:top-prepare-install-ce-t.html)

Rufusで任意のUSBメモリに焼く

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472791/afe93a13-b5a5-75da-28b9-08e5173395ca.png)


## インストールUSBを起動しインストール

2画面だけ。

商用版だと、インストーラーのイメージングツールが別にあり、そちらは強力な設定が可能な様子（その辺で差別化を測っている様子）

create single-node clusterにチェックしていると、自動的にクラスタが構成されるため、クラスタ作成は不要（がしかしトラブルがあったため手動でセットアップした）

勿論BIOSからUSB起動と仮想化支援機能を有効にする設定をしておく。

### ハイパーバイザー・ディスク・ネットワークの設定

ディスクは3つ必要な様子。それぞれ文字を指定する。

同じアドレス圏の2つのアドレスを指定する。

参考：[Recommended Community Edition Hardware](https://portal.nutanix.com/page/documents/details?targetId=Nutanix-Community-Edition-Getting-Started-v2_0:top-sysreqs-ce-r.html)

| letter | desc                   | size   |
| ------ | ---------------------- | ------ |
| h      | ハイパーバイザー       | 32G~   |
| c      | CVM (早い方のディスク) | 200G~  |
| d      | データ                 | 500G?~ |


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472791/5577b926-b390-cc0c-3089-bbba12cbb56c.png)


---


### ライセンス同意

ちゃんと最後までスクロールしてチェックボックスを入れないとインストールエラーになる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472791/a8f6a370-366f-a7f3-596f-d9182a115b4a.png)

## Clusterの作成

参考：[Creating a Cluster](https://portal.nutanix.com/page/documents/details?targetId=Nutanix-Community-Edition-Getting-Started-v2_0:top-cluster-creating-ce-c.html)

CVMにsshでログインできるようになったらClusterを作成する。

~~~bash
# password: nutanix/4u
ssh nutanix@CVM_IPAddress 
~~~

single nodeのチェックを入れず、手動で構成する場合、下の様に実行する。

single nodeの場合`--redundancy_factor 1`を指定しないといけないらしい。

~~~bash
# single node
cluster -s 192.168.x.xxx --redundancy_factor 1 create
~~~



## WEB Consoleへのログイン & 初期セットアップ

指定したCVMのアドレスへブラウザからアクセス。

参考：[Logging into the Web Console](https://portal.nutanix.com/page/documents/details?targetId=Nutanix-Community-Edition-Getting-Started-v2_0:top-login-wc-ce-t.html)

- 下でログイン

| key      | value      |
| -------- | ---------- |
| user     | admin      |
| password | nutanix/4u |

- パスワード変更を求められるのでその通りに
- 変更したパスワードで再度ログイン
- インストーラー準備時に利用したアカウントを入力する（ここでCEのライセンス登録が必要になる）

参考：[Nutanix CE の Prism と最初の NEXT アカウント認証の様子。](https://blog.ntnx.jp/entry/2015/11/03/110642)

### ライセンス登録・日本語化


バグ？でadminユーザの場合、設定→Language Settingsでは設定が反映されない。

admin→プロファイル更新から言語設定を行う。

最低限名前などを入力して保存。

![b44028176fafc0abf90cd85a5c6a912a2edc41f66d9122e07255c5a50d42bed1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472791/5ebf3fa0-4410-9b02-8d99-75b6d12cbe63.gif)

### NWの追加・VMの作成等

![31d0a63954703848e35f26561095c9d6a847b5398b590ea8a82a5836462fa0b7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472791/e70b1d03-fa36-5e98-463d-29577bd4e311.gif)

# Cloud-Initの設定

参考：[Nutanix Cloud-Init Quick Lab](https://www.nutanix.dev/lab_content/cloud-init-lab/contents/lab.html)

上の通り。

ディスクはDisks項のペンマークから編集し、拡大できる。

Proxmoxの様に任意のCloud-Initの設定をUIからは行えない様子（yamlを編集する）

![eb5973f60a55d0de2736a4a8e2460fa24a54667ddf7100c66b3a748477d9dfca.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472791/5c6c845e-1af0-e0c7-f802-5c7d944acdb9.gif)


# 前提・トラブルシューティング

内部はCVM・AHV(Host)ともにCentOSがベースな様子

## 管理コマンド等

| command | target | desc                                     |
| ------- | ------ | ---------------------------------------- |
| cluster | CVM    | クラスタ作成・管理ツール                 |
| ncli    | CVM    | クラスタの内部設定ツール(クラスタ作成後) |
| acli    | CVM    | AHV・VMの設定                            |
| genesis | CVM    | CVMのサービス関連の設定                  |
| virsh   | AHV    | VMの管理                                 |

## logなど

主だったログ出力先

| name | dir         |
| ---- | ----------- |
| CVM  | ~/data/logs |
| AHV  | /root       |
| AHV  | /var/log    |



## インストール時に発生したトラブル

### ディスクシリアルが重複し、ディスク健全性を確保するサービスで適切にマウント出来なくなる
  - RAIDコントローラーを使用し、RAIDを構成したディスクを二つ用意したら発生
  - 
  -  CVMもVMなので、AHV（インストールしたホストにログインし）`virsh edit CVM_NAME`で書き換えてあげる

### ディスクがSSDとして認識される
  - RAIDコントローラーを使用したら発生
  - 上記同様に書き換える

### VM上にインストールしたらCPUの機能が足りんと言われる

CPUタイプをKVM→host,　必要な機能をONに

### Prism（Webコンソールにアクセスできない）

デフォルトの証明書の問題だった様子

参考：[NutanixのWEBコンソールがsafariで開けない時の対処法](https://qiita.com/matsu3365/items/63d39605950ed2aac22a)

### インストール時にNIC指定できない

最小構成でインストール後、設定・書き換え

---

### RAIDコントローラーの問題仔細

以下の構成のHPE ML150で発生

| Spec            |                                              |
| --------------- | -------------------------------------------- |
| CPU             | Intel(R) Xeon(R) CPU E5-2660 v4 @ 2.00GHz x2 |
| memory          | 256GB                                        |
| RAID Controller | Smart Array Gen9 Controllers P440            |

おそらくは他のRAIDコントローラーでも発生する可能性があり、下記に起因する。

- HDDのSerialに成り代わり、RAIDコントローラーのSerialが渡される
- RAIDコントローラー１つで2つのRAIDを構成していた

つまり、Serialが同じディスクが２つ存在することになる。

その結果、Serialをマウントポイント名として使用するhadesなるサービスでトラブルが発生していたようだった。

（同じマウントポイントに２つのディスクをマウントしようとする）

ならばどうにかしてSerial変えてあげれば良いよね？という…

#### virsh editの内容

AHVはほとんどKVMと同様に扱えるらしい

~~~xml
...etc...
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/disk/by-id/scsi-3600508b1001c449ab1fdd604e20d6eb1'/>
      <backingStore/>
      <target dev='sda' bus='scsi'/>
      <serial>PDNMF0ARH890OS-A</serial> ←　コレ
      <wwn>600508b1001c449a</wwn>
      <vendor>ATA</vendor>
      <product>LOGICAL VOLUME</product>
      <alias name='scsi0-0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/disk/by-id/scsi-3600508b1001c05e1b6aa134e89343d40'/>
      <backingStore/>
      <target dev='sdb' bus='scsi'/>
      <serial>PDNMF0ARH890OS-B</serial>　←　コレ
      <wwn>600508b1001c05e1</wwn>
      <vendor>ATA</vendor>
      <product>LOGICAL VOLUME</product>
      <alias name='scsi0-0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
...
~~~

`xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'`の追記

~~~xml
<domain type='kvm' id='15' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
~~~

##### SSDとして認識されるのを回避する

オプションとして、渡す。

~~~xml
  <qemu:commandline>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.scsi0-0-0-0.rotation_rate=1'/>
  </qemu:commandline>
~~~


#### 参考

 - [How to add virtual storage as SSD in KVM](https://serverfault.com/questions/876467/how-to-add-virtual-storage-as-ssd-in-kvm/924717#924717)
 - [CE 2.0 Nested on ESXiによるマルチノードクラスタ作成に失敗する件の原因と回避方法](https://smzklab.net/2023/03/ce-2-0-nested-on-esxi-multi-node-issue.html)
 - [【HW】Nutanix CEをHP ML380G7/P410i構成に入れようとしてドハマりした話](https://xmms.jp/blog/index.php?entry=entry170311-012641)
 - [フィールドインストールガイド - トラブルシューティング](https://portal.nutanix.com/page/documents/details?targetId=Field-Installation-Guide-v5_0-JP:fie-foundation-troubleshooting-r.html)

### NIC生やす

82599ESのNICのを追加

ドライバはデフォで当たっている（流石intel nic）

参考：

- [インストール後の Nutanix CE AHV に追加した NIC を認識させてみる。](https://blog.ntnx.jp/entry/2018/03/21/110948)
- [Configuring Load Balancing active-backup and balance-slb modes on AHV](https://portal.nutanix.com/page/documents/kbs/details?targetId=kA00e000000Xf2qCAC)



（必要ならば）NIC名をeth[0-9]に変更

AHV(Host)側で

~~~bash
[root@NTNX ~]# cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
TYPE=Ethernet
NM_CONTROLLED=no
NOZEROCONF=yes
ONBOOT=yes
BOOTPROTO=none
HWADDR=__NIC_HW_ADDR__
EOF
~~~

下の手順のようにNICをUIから追加する。

メンテナンスモードに移行できないとタスクが失敗した。

![79164df14c6c862d7442b215762b172aa409f209f5dab275568c4893445a5dd9.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472791/6fe0da4d-2c98-308f-ce3c-1a94896f3409.gif)


## インストール時の設定

一例として（installerで入力していた情報）

| key         | value         |
| ----------- | ------------- |
| AHV IP      | 192.168.0.88  |
| CVM IP      | 192.168.0.89  |
| subnet mask | 255.255.255.0 |
| gateway     | 192.168.0.1   |

## デフォルトのユーザ名・パスワード

### AHVのデフォルトパスワード

| key      | value      |
| -------- | ---------- |
| user     | root       |
| password | nutanix/4u |

### CVMのデフォルトパスワード

| key      | value      |
| -------- | ---------- |
| user     | nutanix    |
| password | nutanix/4u |

### prism（Webコンソール）のデフォルトパスワード

| key      | value      |
| -------- | ---------- |
| user     | admin      |
| password | nutanix/4u |

# 参考文献

- [Getting Started with Community Edition](https://portal.nutanix.com/page/documents/details?targetId=Nutanix-Community-Edition-Getting-Started-v2_0:Nutanix-Community-Edition-Getting-Started-v2_0)
- [フィールドインストールガイド - トラブルシューティング](https://portal.nutanix.com/page/documents/details?targetId=Field-Installation-Guide-v5_0-JP:fie-foundation-troubleshooting-r.html)
- [Configuring Load Balancing active-backup and balance-slb modes on AHV](https://portal.nutanix.com/page/documents/kbs/details?targetId=kA00e000000Xf2qCAC)
- [ホストとクラスターの停止・起動手順](https://www.nutanix.com/content/dam/nutanix/ja/documents/support/doc-node-restart.pdf)
- [Nutanixバイブル](https://www.nutanixbible.jp/)
- [CE 2.0 Nested on ESXiによるマルチノードクラスタ作成に失敗する件の原因と回避方法](https://smzklab.net/2023/03/ce-2-0-nested-on-esxi-multi-node-issue.html)
- [【HW】Nutanix CEをHP ML380G7/P410i構成に入れようとしてドハマりした話](https://xmms.jp/blog/index.php?entry=entry170311-012641)
- [Nutanix Community Edition 5.18 徹底解説 / Nutanix CE 5.18 Deep Dive](https://speakerdeck.com/smzksts/nutanix-ce-5-dot-18-deep-dive)
- [そんなことまで！？Nutanix CEを使い倒そう！](https://speakerdeck.com/smzksts/sonnakotomade-nutanix-cewoshi-idao-sou)
- [Nutanix CE に acli で VM を作成してみる。](https://blog.ntnx.jp/entry/2020/03/19/201516)
- [Nutanix CE 環境構築の流れ。（2020 年版](https://blog.ntnx.jp/entry/2020/02/24/152143)
- [インストール後の Nutanix CE AHV に追加した NIC を認識させてみる。](https://blog.ntnx.jp/entry/2018/03/21/110948)
- [Nutanix Enterprise Cloud クラウド発想のITインフラ技術](https://www.shoeisha.co.jp/book/detail/9784798160573)

---

# （おまけ）独断と偏見に基づくハイパーバイザーの比較

記事を書いている私はProxmoxユーザー

| 名前       | UI  | 機能 | 分かりやすさ | ドキュメント量 | 備考                                          |
| ---------- | --- | ---- | ------------ | -------------- | --------------------------------------------- |
| ESXi       | ○   | ◎    | ○            | ◎              | HW制約がキビシイ、CPUの制約がネック？         |
| Proxmox VE | ○   | △    | ◎            | ◎              | debian baseで実家の様な安心感、NWが若干貧弱？ |
| nutanix CE | ◎   | ◎    | ○            | △              | インストールさえ乗り越えれば？                |

- Proxmox以外は、独自に開発しているハイパーバイザーだったり、独自インターフェースだったりする。
- Proxmoxはネットワーク周りの設定をUIから行えない
- UIはNutanixが一番かっこいいと思う（小並感）
- Nutanixはコミュニティがあるが、トラブルシューティング時の情報はあまり多くない印象
- ESXiやProxmoxはその辺が充実している気がする。（Proxmoxに至ってはDebianだし）