Db2 11.5.4 on OpenShift に有償ライセンスを登録

Db2 にはコンテナ版が提供されていて、オンプレミス版同様に無償(※)で利用することができます。
　(※) Db2 Community Edition：4 cores,16 GB RAM までのサーバであれば無償

Db2 11.5 の製品ライセンス体系についてはこちらに整理されています。
　→ [Db2 11.5 KnowledgeCenter[Db2 データベース製品のエディションおよび Db2 オファリング]](https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.licensing.doc/doc/c0058536.html)
Db2 11.5.4 ライセンスの確認・登録作業は、下記のページを参考に実施します。
　→ [Db2 11.5 KnowledgeCenter [Db2 Community Edition ライセンス証明書キーのアップグレード]](
https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.db2u_openshift.doc/doc/t_db2u_upgrd_lic.html)


ここでは、導入済みのDb2 11.5.4 on OpenShiftに、ライセンスを登録する手順をメモとして残します。

 * 補足：Db2 11.5.4 on OpenShift 導入時の手順・ログはこちら<br> → [Db2 11.5.4 on OpenShift をデプロイしてみた](https://qiita.com/mi-kana/items/fed0d47fca56853fdd4e)

 * 補足2：Db2 11.5.5 では手順が変わっています。<br> → Db2 11.5 KnowledgeCenter [
Upgrading your Db2 Community Edition license certificate key](https://www.ibm.com/support/knowledgecenter/SSEPGG_11.5.0/com.ibm.db2.luw.db2u_openshift.doc/doc/t_db2u_upgrd_lic_v11-5-5.html)

##Step1. ライセンス登録状況の確認

コマンド構文：

```
$DB2PATH=`oc rsh <RELEASE_NAME>-db2u-0 bin/bash -c "db2ls | cut -d ' ' -f 1 | awk 'NR==4'" | sed $'s/[^[:print:]\t]//g'`
$oc rsh <RELEASE_NAME>-db2u-0 /bin/bash -c "sudo $DB2PATH/adm/db2licm -l"
```

実行例：

```
$ DB2PATH=`oc rsh db2u-oltp-0-db2u-0 bin/bash -c "db2ls | cut -d ' ' -f 1 | awk 'NR==4'" | sed 's/[^[:print:]\t]//g'`
$ oc rsh db2u-oltp-0-db2u-0 /bin/bash -c "sudo $DB2PATH/adm/db2licm -l"
Product name:                     "DB2 Enterprise Server Edition"
License type:                     "License not registered"
Expiry date:                      "License not registered"
Product identifier:               "db2ese"
Version information:              "11.5"

Product name:                     "IBM DB2 Developer-C Edition"
License type:                     "Community"                    ← Community Edition ライセンス 
Expiry date:                      "Permanent"
Product identifier:               "db2dec"
Version information:              "11.5"
Max amount of memory (GB):        "16"
Max number of cores:              "4"
Max amount of table space (GB):   "100"
```

　---> この環境には、Community Edition(無償版)ライセンスが適用されていることがわかります。

##Step2. ライセンス・ファイルの登録
Advanced Edition などのライセンスを適用する必要がある場合は、予め入手しておいたライセンスファイルを、ocコマンド実行ノードに配置し、下記のコマンドを oc コマンド実行可能なノードで実行する。
環境変数 RELEASE_NAME と、 LICENSE_FILE (ライセンスファイルパス名) は、環境に応じて編集した上で実行する。

コマンド構文：

```
$ RELEASE_NAME="db2u-oltp-0"
$ LICENSE_FILE="./db2adv_vpc.lic"
$ oc delete configmap "${RELEASE_NAME}-db2u-lic"
$ oc create configmap "${RELEASE_NAME}-db2u-lic" --from-file=db2u-lic=${LICENSE_FILE}
$ oc delete pods "${RELEASE_NAME}-db2u-0"
```

補足：
上の手順で最後に delete pods を行っているのは、Db2再起動しなければライセンスファイルが再読み込みされないことから、Pod を再起動するための操作。
delete pods の後まもなく、Db2U の Pod は再起動される。


実行例：

```
$ ls -la .
total 8
drwxr-xr-x.  2 root   root     28 May 28 22:09 .
drwxr-xr-x. 16 root   root   4096 May 28 22:09 ..
-rw-------.  1 user01 user01  941 May 31  2019 db2adv_vpc.lic

$ RELEASE_NAME="db2u-oltp-0"
$ LICENSE_FILE="./db2adv_vpc.lic"

$ oc delete configmap "${RELEASE_NAME}-db2u-lic"
configmap "db2u-oltp-0-db2u-lic" deleted

$ oc create configmap "${RELEASE_NAME}-db2u-lic" --from-file=db2u-lic=${LICENSE_FILE}
configmap/db2u-oltp-0-db2u-lic created

$ oc delete pods "${RELEASE_NAME}-db2u-0"
pod "db2u-oltp-0-db2u-0" deleted
```

ここまでの手順で、Db2ライセンスの入れ替えは完了。
Db2 on Openshift の Pod を再起動し、新しいライセンスファイルを認識させる。

```
$ oc get pods -o wide
NAME                                      READY   STATUS       RESTARTS   AGE    IP             NODE      NOMINATED NODE   READINESS GATES
db2u-oltp-0-db2u-0                         1/1     Running      0          107s   10.131.0.98    worker3   <none>           <none>
db2u-oltp-0-db2u-engn-update-job-r6jsr     0/1     Completed    0          21d    10.131.0.96    worker2   <none>           <none>
db2u-oltp-0-db2u-ldap-67589cbdb9-s6pn9     1/1     Running      0          5d6h   10.128.2.199   worker2   <none>           <none>
db2u-oltp-0-db2u-nodes-cfg-job-rz4mp       0/1     Completed    0          21d    10.128.2.48    worker2   <none>           <none>
db2u-oltp-0-db2u-restore-morph-job-ktscl   0/1     Completed    0          21d    10.128.2.81    worker2   <none>           <none>
db2u-oltp-0-db2u-sqllib-shared-job-f8zg7   0/1     Completed    0          21d    10.128.2.44    worker2   <none>           <none>
db2u-oltp-0-db2u-tools-695f4bf9f6-ptwnb    1/1     Running      0          5d6h   10.128.2.206   worker2   <none>           <none>
db2u-oltp-0-etcd-0                         1/1     Running      0          5d6h   10.128.2.203   worker2   <none>           <none>
db2u-oltp-0-etcd-1                         1/1     Running      0          5d6h   10.129.2.5     worker1   <none>           <none>
db2u-oltp-0-etcd-2                         1/1     Running      0          5d6h   10.131.0.156   worker3   <none>           <none>
```

　---> db2u-sto0-db2u-0 (Db2本体)のPodが再起動され、Running状態に戻っています。

##Step3. ライセンス登録状況の確認
ライセンス・ファイルが登録されたことを確認する。

```
$ oc rsh db2u-oltp-0-db2u-0 /bin/bash -c "sudo $DB2PATH/adm/db2licm -l"
Product name:                     "DB2 Advanced Edition"
License type:                     "Virtual Processor Core"
Expiry date:                      "Permanent"
Product identifier:               "db2adv"
Version information:              "11.5"
Enforcement policy:               "Hard Stop"
Features:
IBM DB2 Performance Management Offering:              "Not licensed"

```

　---> Advanced Edition(有償版)ライセンスが適用されていることが確認できました。

-----------------
**Tips：**
2020.07時点のKnowledgeCenterに記載の手順ではPermission Deniedエラーのためdb2licmコマンドが失敗する。
Db2U 11.5.4 のログイン時のユーザは db2uadm というユーザIDで、db2licmコマンドの実行権限が与えられていないためと考えられる。
そこで、上の手順ではsudoで実行することでroot権限にてdb2licmコマンドを実行している。

--------------

以上となります。