Planning Analytics Workspaceの構築時に役立つ操作メモ

#Planning Analytics Workspaceの構築時に役立つ操作メモ
PAWの構築って毎度毎度苦労しますね。
同じ手順をやっているつもりでも、何故かうまく行ったり行かなかったり。
今回も相当苦労しましたので、自分のメモも兼ねて、情報共有しておきます。

環境は、Planning Analytics Workspaceの2.0.54@Windows 2016 Serverです。

#マニュアル箇所
インストール時に役立つマニュアルのリンクは、
**Installing Planning Analytics Workspace Local** 配下の各ドキュメントと、
https://www.ibm.com/support/knowledgecenter/SSD29G_2.0.0/com.ibm.swg.ba.cognos.tm1_inst.2.0.0.doc/c_paw_install_overview.html

こちらのTroubleShootingの下も忘れずに読みましょう。
**How do I fix my Planning Analytics Workspace Local installation?**
https://www.ibm.com/support/knowledgecenter/SSD29G_2.0.0/com.ibm.swg.ba.cognos.tm1_inst.2.0.0.doc/c_troubleshooting_paw_local_installation.html

#初期構築時
操作は基本はPowerShellを管理者モードで立ち上げて行います。
![001.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/11865b28-4e30-7c43-a90d-d2fddeb986fc.png)

初期構築時は、このStart.ps1の実行で行いますが、なんと言っても初期構築ではまりガチなのが、アンチウィルスソフトが動作している事です。Start.ps1で非サポートのウィルスソフトの確認をしますが、関係なく構築失敗しますので、アンチウィルスは止めておきましょう。Start.ps1を実行しても、CPUがぶん回らない時、アンチウィルスでブロックされている可能性が高いので、時間かかるな～と、気長に待ってないでCPUの使用具合は確認しましょう。
![019.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/b20d01e3-3c28-f742-f27d-a7f9dc2178c6.png)

アンチウィルスS/Wで何を除外すれば良いかは、そのS/Wによって異なるようなので、実際にやってみて試すしかないですが、少なくともDockerの以下のガイドは読み、「C:\Program Files\docker」や「C:\ProgramData\docker」は除外しておきましょう。
https://docs.docker.com/engine/security/antivirus/


#通常の起動停止
Windowsサービスのdockerサービスを起動すれば、PAWの各種コンテナーも一緒に起動されますが、少なくとも停止はdockerサービスの停止ではダメです。

PAWの展開先のscriptフォルダの下に移動し、
![031.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/c2050214-850e-af64-9923-fb668e1199e7.png)

**paw.ps1 stop**
で停止して下さい。
![032.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/e4da1224-2be7-1b87-dccf-96001f01c8d0.png)

このコマンドだとdockerサービスまでは停止しないので、このまま起動したい場合
**paw.ps1**
となります。
![033.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/f028fd8b-0fcf-bb8e-3829-8ebdffd8e50d.png)


#起動判定
**docker ps**
の実行で、必要なコンテナのSTATUSがUp になっているか確認。
![002.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/ad15e929-298a-485a-fc8e-adf4643bcd21.png)

**docker ps --format "{{.Names}} {{.Status}}"**
このコマンドにすれば、もうちょっと見やすいです。
PAWのバージョンによってバリエーションや数は変わると思うので、自分の環境で何が起動していれば良いかを知っておく事は大事です。
![003.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/98473959-a4e3-22cc-e62e-689434e869c4.png)

**docker ps -a**
を実行すると、Up以外のステータスのコンテナーも表示されます。
コンテナーのステータスが「Dead」や「Removal In Progress」とかなっているものは、何とかしないといけません。
![004.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/722b2466-d454-b287-76f3-f0b4032f88f1.png)

#Removal In Progressからの復旧
よくこの状態になりますが、放っておいても直りません。
![024.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/c37df39f-5b6d-2371-fec7-94b10aadf69b.png)

直し方の1番目は、
**docker container inspect コンテナID**
で、以下のようにIdの詳細見れるので、
![006.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/e48ccbdb-43a4-ef57-ec1c-fb8a0378111b.png)

エクスプローラーで、C:\ProgramData\docker\containersの下の該当のフォルダに行き、
![007.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/c7c41ea8-f077-6a04-1926-caf4a49f2128.png)

config.v2.jsonを開き、RemovalInProgressを「false」に修正し、
**docker container rm コンテナID** でコンテナを削除し、
その後 paw.ps1 stop → paw.ps1で再起動してみる。
![008.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/6407e73b-08d5-b08c-8d3d-dda11222754f.png)

直し方の2番目は、
結局何かがコンテナーをつかんでRemoveを妨げているようなので、ズバリWindows OSの再起動が必要です。

#Deadの直し方
いくつかのコンテナーのステータスがDeadになっている状態で、paw.ps1で起動しても、起動エラーとなる場合があります。
![025.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/84bcce25-a885-47c7-d8ab-c98bd1c343f3.png)

そういう場合は、
**docker container prune**
を行うと、Deadのコンテナーの削除ができますので、削除できれいにした後に、
**paw.ps1 stop**
**paw.ps1**
で再起動すると、コンテナーが再作成されます。

#全部消して一からやり直したい
結局何もかもダメになってしまって、まっさらに一からやり直したい場合。
scriptsフォルダ上で、
**paw.ps1 down --rmi all -v**
で削除します。
![009.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/c151e95a-c21f-63b0-2040-87ce8e4abb61.png)

こんな感じのコマンドで確認していって、imageが残っている場合、
![010.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/0f5dec2d-6c18-573d-cfbb-e9512b498bfc.png)

**docker system prune --volumes --all**
![011.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/17214195-d919-6ed1-26a1-f08b76827edb.png)

コンテナーが削除されずに残ってしまった場合、個別に削除。
![026.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/d25d619f-c6e5-9dee-6af8-ea9fb842ef01.png)

dockerそのもののアンインストール
**Uninstall-WindowsFeature containers**
![013.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/32eb75e7-4798-e6d3-6509-4c4da19f5f1d.png)

コマンドウィンドウで以下を実行し、サービスからdockerの登録解除
**sc delete docker**
![014.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/7c03d4a4-f339-4cf5-843a-c8866d52bec8.png)

dockerのインストールパスのリネーム
![015.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/2b8e6c68-4f2c-a3ba-18a0-0af26804709d.png)

dockerのデータパスのリネーム
![016.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/fad8290b-e14c-19c5-ff61-cf2e392f28fd.png)

Workspaceモジュールの解凍先のリネーム
![017.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/f70333a8-b991-6e3d-8899-e9a46db09ace.png)

dockerのネットワークはこの状態のままで良い
![022.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/7a172141-b1a7-fd3b-8dda-942c46769cd3.png)

Windows OSを再起動

Workspaceモジュールの再解凍
![018.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/98babc0d-31a1-f935-f683-f52832889835.png)

**Start.ps1**
![019.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/6031e0d6-99c5-f82c-90cb-4a8f7c241fc3.png)

dockerは導入されるので、再度Windows OSを再起動
![020.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/5b7dd933-8159-8595-879d-380bb6678fa5.png)

もう一回、
**Start.ps1**
で導入を進める。

#管理者登録
誰かしらのユーザーを管理者に格上げしたい場合
コマンドウィンドウで、以下のコマンドを打って
**docker exec -it wa-proxy powershell -command "C:\wa-proxy\tools\runTool.ps1"**
![023.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/82c53c64-7007-991a-7fc5-03950d9afc15.png)

対象ユーザーのuserIdを確認し、
![028.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/f2244fa8-b7f4-fffc-4ef0-d5b652232d61.png)

以下のコマンドで、userIdを指定して実行
**docker exec -it wa-proxy powershell -command "C:\wa-proxy\tools\runTool.ps1" userIdを指定**
![029.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/3e327247-39cb-15a0-ffb9-6d4967dfd58c.png)

管理機能が使用可能になります。
![030.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/d65e0aaa-e31a-674e-9ad7-b7c7a0463ddd.png)


#MongoDB停止設定
PAW停止せずに、いきなりWindows OSを停止するとMongoDbコンテナーが破損するようなので、この設定を入れましょう。
**Shut down MongoDB cleanly on Windows Server 2016**
https://www.ibm.com/support/knowledgecenter/SSD29G_2.0.0/com.ibm.swg.ba.cognos.tm1_inst.2.0.0.doc/t_paw_shutdown_on_windows_mongo_db.html

![034.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/78833b31-82d7-04cb-341f-5c3cf198ebbe.png)


#バックアップ後に起動不可にならない注意点
PAWはブックやビューなどのコンテンツの保管場所は、TM1のCube内やDataフォルダ内ではなく、PAWのコンテナーの中に保管されるので、PAW独自のバックアップが必要です。
https://www.ibm.com/support/knowledgecenter/SSD29G_2.0.0/com.ibm.swg.ba.cognos.tm1_inst.2.0.0.doc/t_paw_backup_restore.html

コマンドとしては、PowerShellで、\scripts\backup.ps1で行いますが、バックアップ中にPAWの各コンテナーが勝手に再起動されますので、必ずオフラインバックアップになります。
30分程度は停止時間を確保するようにした方が良いです。

さて、そのバックアップ中の再起動時に、「Starting コンテナー名...」という表示で起動する時と、「Recreating コンテナー名...」という表示で起動される時があります。
そして残念な事に「Recreating コンテナー名...」の場合、結構な確率で起動できないコンテナーが発生し、破損してしまうコンテナーも出てきます。
なので、「Recreating」ではなく「Starting」で必ず起動する状態にしておく事が必要です。

これはどのように行うかというと、PowerShellでバックアップを取得する場合は、PowerShellのプロンプト上で、一度、**paw.ps1 stop**+**paw.ps1**しておく事が必要なようです。
落とし穴になりガチなのが、バックアップは、タスクスケジューラー等からウィンドウズバッチを呼び出して定期取得する運用にする場合です。※むしろ一般的
この場合、バックアップの運用に入る前に、一度コマンドウィンドウ上で、
**Powershell.exe -File C:\CognosPAW\scripts\paw.ps1 stop**
**Powershell.exe -File C:\CognosPAW\scripts\paw.ps1**
しておくと、バックアップ後の起動が「Starting」になるので、ちゃんとバックアップが成功するようになります。
PowerShellではバックアップ成功したのに、バッチではエラーになる場合、こちらをお試し頂ければと思います。

#vEthernet(HNS Internal NIC)が消えてしまった場合
Start.ps1はこのエラーで失敗
![032.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/19191dae-74f6-a466-e43d-2748ea9c2af8.png)

get-containernetwork でnatが表示されるのはNGみたい。
これを削除したい場合、get-containernetwork | remove-containernetwork では消えないので、
net stop HNSでHNSサービス停止。
![045.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/0261b9f3-eafd-8d66-6264-cd2e0b53028b.png)

このファイルを削除
![046.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/cdc83503-a584-b4b3-85ab-e4a949e52aa0.png)

HNSを起動すると、natは消えていて、docker再起動するとvEthernet(HNS Internal NIC)は復活します。
![049.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/80689e4b-de35-3ab7-1513-715950abec09.png)

#特定のコンテナーが停止しない
paw.ps1 stopでコンテナーが停止せずに残ってしまう事があります。こういう状態でpaw.ps1で起動すると、大概起動エラーになります。
![002.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/bafd6d1c-97ce-781d-bfc7-ba12b1f0191b.png)

コンテナーの停止は、以下のコマンドでやっておきましょう。
![003.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147246/6896baca-5704-8820-1873-7a05089115d0.png)



以上です。
バージョンが上がれば、色々と解消されてくるものはあるかも知れませんが、Planning Analytics Workspace 2.0.54 の例として参考にして頂ければと思います。