Nutanix CE ce-2017.07.20-stableにおけるPrism Centralの1-Clickデプロイがコケる場合のバッドノウハウ的なワークアラウンド

![スクリーンショット 2017-12-06 02.51.11.png](https://qiita-image-store.s3.amazonaws.com/0/84474/616aa809-1c22-3c3f-c50d-f73e4aa83d89.png)


本記事は、Nutanix Advent Calendar 2017には関係無く、Nutanix CEユーザーの皆様からの~~圧力~~お気持ちをそんたくして記載した、Nutanix CE ce-2017.07.20-stableにおけるPrism Centralの1-Clickデプロイがコケる場合のバッドノウハウ的なワークアラウンドの何かです。

本記事の内容はこの日付時点の情報（2017年12月6日時点）に基づいています。そして本記事はオフィシャルなサポートではなく、一個人にて**「とりあえず、やったみたら、なんかうまく行った」**内容のシェアであるため、当該バッドノウハウを活用することで発生する問題等に対する一切の責任は負いかねますのでご注意下さい。


#はじめに
AOS 5.1で実装されたPrism ElementからのPrism Centralの1-Clickが、Nutanix CE ce-2017.07.20-stableにも実装されていますが、こちらの1-Clickデプロイが割とコケるという報告が散見されています。私の環境でも実施したところ、再現してしまい、いくつか解決策を探していましたが、（バッドノウハウ的な）ワークアラウンドっぽいものについて見つけることができたのでシェアします。

#ワークアラウンド
以下に、ワークアラウンドの手順のサマリを記載します。

1. NutanixのCommunity Editionダウンロードページから「ce-pc-2017.07.20.tar」ダウンロード
2. ダウンロードしたce-pc-2017.07.20.tarを解凍
3. 解凍した「ce-pc-2017.07.20_boot.qcow2」と「ce-pc-2017.07.20_home.qcow2」をイメージサービスに登録
4. Prism ElementからPrism Centralの1-Clickデプロイを行い放置してコケさせる
5. Prism Central VMの電源を落とす
6. Prism Central VMのVM構成画面を開き、TYPEがDISKのscsi.0、scsi.1を削除
7. Prism Central VMのVM構成画面から3.でイメージサービスに登録した2つのディスクイメージを追加
8. Prism Central VMを起動し、sshでnutanixユーザーでログイン（パスワードはデフォルトのもの）
9. Prism Central用のcluster createコマンドでPrism Centralを構成
10. （必要に応じて）Prism CentralのWebコンソールのデフォルトユーザログインパスワードのリセット
11. （必要に応じて）クラスタが起動したらncliコマンドでDNSやNTPを設定


## 1.NutanixのCommunity Editionダウンロードページから「ce-pc-2017.07.20.tar」をダウンロード
Community EditionダウンロードページからPrism Centralのバイナリである「ce-pc-2017.07.20.tar」をダウンロードしておきます。
![スクリーンショット 2017-12-06 00.55.38.png](https://qiita-image-store.s3.amazonaws.com/0/84474/6f7985dc-8fd5-d261-cde1-ef121dc38d3a.png)

##2.ダウンロードしたce-pc-2017.07.20.tarを解凍
ダウンロードしたce-pc-2017.07.20.tarを任意のディレクトリに解凍しておきます。解凍すると以下の2つのファイルが解凍されます。

- ce-pc-2017.07.20_boot.qcow2
- ce-pc-2017.07.20_home.qcow2

##3.解凍した「ce-pc-2017.07.20_boot.qcow2」と「ce-pc-2017.07.20_home.qcow2」をイメージサービスに登録
2.の手順で解凍した2つのファイルをギアアイコンのイメージ設定からイメージサービスに登録します。登録名は任意です。以下の例では、IMG-PC-BOOTとIMG-PC-HOMEと命名して登録しています。
![スクリーンショット 2017-12-06 01.01.53.png](https://qiita-image-store.s3.amazonaws.com/0/84474/c56bb2f0-89d1-06af-24c6-f21e12f252c4.png)

##4.Prism ElementからPrism Centralの1-Clickデプロイを行い放置してコケさせる
Prism Elementのトップ画面から画面から「登録」をクリックしてPrism Centralのデプロイを行いわざとコケさせます。この作業の中では、Prism CentralのVM名、サイズ、VLAN、IPアドレスが設定されます。なおPrism CentralはVM名_ctrというStorage Containerが自動作成され、そこの配置されます。以前にPrism Centralの1-Clickデプロイがコケていて、再度デプロイを実行しようとしても既に実行中のタスクがあるとのエラーでデプロイができない場合は、末尾のバッドノウハウのバッドノウハウをご覧下さい。

##5.Prism Central VMの電源を落とす
Prism Centralが中途半端に上がった状態でタスクがエラーとなりデプロイがとまっている状態のハズなので、ここで電源を落とします。わざわざshutdown -h nowをせずにコンソールから電源オフで大丈夫です。

##6.Prism Central VMのVM構成画面を開き、TYPEがDISKのscsi.0、scsi.1を削除
デプロイが半端に進んでコケたPrism CentralのVMの構成画面を開き、TYPEがDiskのscsi.0、scsi.1デバイスをそれぞれ削除します（scsi.2の500GBのデバイスは残しておきます）。

##7.Prism Central VMのVM構成画面から3.でイメージサービスに登録した2つのディスクイメージを追加
3.の手順でイメージサービスに登録しておいたce-pc-2017.07.20_boot.qcow2のイメージを最初に、次にce-pc-2017.07.20_home.qcow2のイメージをVMのディスクとして追加します。今回の例では、イメージサービスへの登録名がそれぞれIMG-PC-BOOTとIMG-PC-HOMEしてあるため、それぞれ選択して、Prism Central VMにディスクを登録します。
CPUやメモリ、NICについては触れる必要はありません、4.の手順のウィザードの中で設定された値が既に設定されているハズです。
![スクリーンショット 2017-12-06 01.19.55.png](https://qiita-image-store.s3.amazonaws.com/0/84474/d8995aa1-5899-d8f8-260f-a13b868a0315.png)

##8.Prism Central VMを起動し、sshでnutanixユーザーでログイン（パスワードはデフォルトのもの）
Prism Central VMのVM再構成が完了したらVMをパワーオンします。4.の手順ではfsckなどのエラーが出てマトモに起動してこなかったPrism Central VMが起動しているハズです。VMが起動しきるとログイン可能になりますので、PrismのVNCからnutanixユーザーでログインします（ログインパスワードはCVMのログインと同様）。標準出力にminervaなんとかというメッセージが出ていても無視します。

##9.Prism Central用のcluster createコマンドでPrism Centralを構成
sshコンソールにログインが完了したら、Prism Central用のCluster createコマンドで、特殊なClusterサービスを構成、起動します。コマンドは以下のとおり。

```bash:
Prism Central-Cluster createコマンド

cluster --cluster_function_list="multicluster" -s [PRISM CENTRALデプロイ時に設定したIP ADDRESS] create
```

Nutanixクラスタの手動での構成時によく似た画面が見えてくるハズです。クラスタの各種プロセスが表示されれば無事にPrism Centralのサービスが起動完了です。
![スクリーンショット 2017-12-06 01.37.59.png](https://qiita-image-store.s3.amazonaws.com/0/84474/2d86ad4d-dbe4-73e7-f4a8-0fcb4e6a3567.png)


##10.（必要に応じて）Prism CentralのWebコンソールのデフォルトユーザログインパスワードのリセット
Prism Centralのクラスタ構成が完了し、Prism Centralのサービスが起動完了すると、Prism CentralのIPアドレスをブラウザに入力することで、Prismのログイン画面と同じ画面が見れるようになりますが、通常の初回ログイン時のデフォルトユーザーであるadminとそのデフォルトパスワードでログインできないケースがあります。その場合は、ncliからadminユーザのパスワードリセットを行います。
adminユーザーのデフォルトパスワードのリセットは以下のncliコマンドで行います。

```bash
: ncliでPrism CentralのWebコンソールログインに必要なadminユーザーのパスワードをリセット

ncli user reset-password user-name=admin password=[PRISM ELEMENTで設定したPASSWORDなど]

```

※パスワードリセットで設定する新しいパスワードは、Nutanix CE ce-2017.07.20-stableにおけるパスワード要件に沿う必要があります、上記の例では、Prism Elementに設定済みのパスワードであれば、既にパスワード要件をクリアしているパスワードのハズですので、そちらを設定するといった内容としています


##11.（必要に応じて）クラスタが起動したらncliコマンドでDNSやNTPを設定
手順の10まで完了するとPrism Centralの画面にログインし、Nutanixのクラスタ構成後の初回ログイン時のNutanix CEのアクティベーションと同様にPrism Centralでもアクティベーションが必要になりますが、手順9.でのPrism Centralクラスタの手動構成では、Prism Centralクラスタに対するDNS設定やNTP、TimeZoneなどの設定を行う必要が生じる場合があります。
アクティベーション時にHostが見つからない等のエラーが出た場合には、以下のコマンドを投入しPrism Centralクラスタからの名前解決等が可能な状態にしておきます。

```bash
: bashから、またはncliシェルに入った場合は以下のコマンドからncliを抜いてコマンド投入

ncli cluster add-to-name-servers servers=8.8.8.8,[自前で立てているDNSサーバのIPアドレス等]
ncli cluster add-to-ntp-servers servers=ntp.nict.jp,[Nutanix側に設定している公開NTPサーバー等]
ncli cluster set-timezone timezone=Asia/Tokyo
```

#バッドノウハウのバッドノウハウ
そもそも、手順4.の「Prism ElementからPrism Centralの1-Clickデプロイを行い放置してコケさせる」以前に、それ自体が実行できない場合があります。これは、以前にコケたデプロイのタスク情報が残ってしまっており、しかもスタックしたままの状態になっている（青い進行中のタスクがあるように見えて実は完全にスタックしている）、そしてそれをPrismなどから手動でkillすることができないためです。その場合は、以下の対応を行った上で、手順の4.から再開します。

**WARNING!! /// ここからの作業は、Prism Central VMではなく、CVM上で行います /// WARNING!!**

![スクリーンショット 2017-12-06 02.05.32.png](https://qiita-image-store.s3.amazonaws.com/0/84474/d285a54b-484f-df10-61e2-aaab6faecb6e.png)

##ハングアップしているタスクの強制停止

###１．ハングアップしているタスクの特定
Running で、かつハングアップしているタスクは単純に acli などの task.list や progress_monitor_cli -fetchall では見えず、acliで以下のコマンドで拾う必要があります（先ほどまでは **「ncli」** でしたが、ここから **「acli」** です、お間違えないよう）。

```bash
: Running状態等でスタックしているタスクの検出

acli task.list include_completed=false 
```

上記コマンドの実行結果例です。

```
Task UUID Parent Task UUID Component Sequence-id Type Status
fdc492dc-eb52-4ccc-abbc-988184e34f74 xxxxxx-xxxxxx xxxxxxxxxxx xx kRunning
```

※ UUIDやxxxxxx-xxxxxx xxxxxxxxxxx xxは、実行環境やスタックしているタスクの内容によって変わるため各自読み替えて下さい。

上記のコマンド例だと、「fdc492dc-eb52-4ccc-abbc-988184e34f74」がタスクのUUIDとなります。場合によってサブタスクも一緒に表示され、表示結果が2行以上出る場合もあります。

###2.タスクの状態の強制上書き
上記のコマンドを実行で、RunningのままスタックしているタスクのUUIDが分かりました。今回の例だと、Prism CentralのDeploy等の文字列が入っているタスクがUUIDと共に表示されるハズです。次のこのUUIDを利用してタスクの状態を強制的にFailedまたはAbortedに書き換えて強制停止します。サブタスクも含めて複数行が表示されている場合は、すべての表示行の回数だけ以下の作業を繰り返します。

```bash
: acliでタスクの状態を強制上書き

acli task.update task_list=<task-uuid> status=kFailed

または

acli task.update task_list=<task-uuid> status=ｋAborted
```

上記のコマンドを投入すると以下のような表示がされ、本当にやっちゃってＯＫ？と聞かれるので、問い合わせの度にyesを入力して処理を実行します。

```
Using this command can cause database corruption and complete system
failure, if used improperly. Are you sure you want to continue?
(yes/no) yes

You are about to update 1 tasks. Are you sure you want to continue?
(yes/no) yes
Task update for UUID: 5e012fb7-1ab4-4bdb-a663-55fa8e0ee7ce: pending
Task update for UUID: 5e012fb7-1ab4-4bdb-a663-55fa8e0ee7ce: complete
```

###3．Genesis（クラスターのローカルプロセスの再起動）
上記のコマンドの実行が完了したら、以下のコマンドを実行します（acliシェルに入っていたらいったんacliシェルから抜けてbashから）。

```bash
: genesisプロセスとClusterプロセス再起動

genesis stop acropolis; cluster start
```

それでも、まだPrism ElementからPrism Centralの1-Clickデプロイでエラーが出るようだったら、再度１．ハングアップしているタスクの特定からやり直します。これで、一度、Prism ElementからPrism Centralの1-Clickデプロイを行い放置してコケさせるの手順が実行可能になるハズです。


##（必要に応じて）さらにその他のバッドノウハウ
Prism ElementからPrism Centralの1-Clickデプロイを行い放置してコケた場合、Prism Centralのデプロイウィザード中で指定したVM名に「_ctr」を付けたStorage Containerが自動で作成されますが、デプロイがコケたあとVMを削除しても、この自動作成されたStorage Containerにはゴミが残り、Prismのストレージのダッシュボードから削除することができません。

>参考:エラー時のメッセージ
Container testing contains VDISK(s) NFS:754408 NFS:754407 NFS:754222
NFS:754407 NFS:754407 NFS:754222 not marked for removal

Prism Centralのデプロイワークアラウンドを行う上では、このStorage Containerは残ったままでも問題ないのですが、なんかどうしても気持ち悪い、Prism　Centralのデプロイは諦めて残骸を綺麗にしたいといった場合には、以下の手順を実行します。そこで、本当は基本的にやっちゃいけない、本当にダメでダメなノウハウで削除することにします。

**この操作は冗談抜きにNutanixのストレージがおかしくなる可能性があるので自己責任で行って下さい。**

一度、全部綺麗にしてやり直したいといった場合には以下の手順で、消せないStorage Containerを削除します。やり方は簡単です、WinSCPでCVMにログインします。ログイン先IPは、CVMのアドレスならどれでも良いです。ただし **WinSCPでデフォルトで設定されているポート22番ではなく、ポートを2222に変更** します。ユーザーとパスワードは **CVMのログインユーザーとパスワードではなく、PrismのWebコンソールのログインユーザーとパスワード** でログインします。

通常、CVMへのログインユーザーはnutanixですが、今回WinSCP、ポート2222でログインする場合は、PrismのWebコンソールのログインユーザーとパスワードとなり、adminとそのパスワードになります。ログインすると、Storage Container名のフォルダが見えるので、そのフォルダに入り、中のファイルをすべて消します。それが消し終わったら、Prismに戻り、ストレージのダッシュボードから、Storage Containerを削除します。

![スクリーンショット 2017-12-06 02.38.50.png](https://qiita-image-store.s3.amazonaws.com/0/84474/586342e8-ff66-c271-6c0b-5e3777186e8f.png)

#まとめ
バッドノウハウにバッドノウハウを重ねた力業ワークアラウンドです。くれぐれもマネしないようにしてください。
それでは、Nutanix Advent Calendar 2017の2枚目でお会いしましょう（私のAdvent Calendarは、2枚目なのでかなり緩めです）。

#Nutanix Advent Calendar 2017はこちら

 [Nutanix Advent Calendar 2017-1枚目](https://adventar.org/calendars/2113/)

 [Nutanix Advent Calendar 2017-2枚目](https://adventar.org/calendars/2761/)

なお2枚目の最終日はまだ登録されていませんが、@smzkstsが、Nutanix Community Meetupのリモート配信で利用するWebExのTipsについてお送りする予定です。