OCI DBインスタンスにOCI-CLIのインストール方法

本ブログは、[オラクル・クラウドの個人ブログ](https://qiita.com/letian/items/10152a4fec813c1b7d98)の1つです。

# 初めに
OCI-CLIはとても便利なコマンドラインツールです。On-PのクライアントやOCI Computeインスタンスに簡単にインストールできます。Oracle DBCSインスタンスでも使用したい方がいらっしゃると思います。例えば、OCIオブジェクト・ストレージにファイルを転送したい時に、OCI-CLIを利用すれば非常に便利です。

Oracle DBCSインスタンスでもOCI-CLIを利用できますか？答えは「可能」です。ただし、インストール時にレポジトリ接続エラーが発生することがあります。このエラーを回避する方法について、今回は紹介したいと思います。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/c5dafa96-71ca-a3d3-3db1-a1d262b6bc87.png", width="400">

__動作確認環境__
- OCI DB System (VM)
- DBバージョン: Oracle DB 19c Standard Edition (<strong>19.13, 19.14</strong>は、動作確認済)

:::note
バージョン<font color=blue>19.15</font>より新規作成の場合、OCI-CLIは既にインストール済です。本文最後にある「[追記](#追記)」をご参照ください。
:::

# インストール方法
__1. インストール前__
DBシステム(VM)が作成されると、インスタンスにログインして、OSのバージョン情報を確認できます。OCI-CLIはインストールされていません。 

```bash
[opc@db19c ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
[opc@db19c ~]$ oci -v
-bash: oci: command not found
[opc@db19c ~]$
```

OCI Compute VM(Oracle Linux 7)では、次のコマンドでOCI-CLIをインストールできます。
`sudo yum install python36-oci-cli`
ただし、DBシステムのインスタンスでこのコマンドを実行すると、次のようなエラーが発生します。

```bash
[opc@db19c ~]$ sudo yum install python36-oci-cli
Loaded plugins: versionlock
There are no enabled repos.
 Run "yum repolist all" to see the repos you have.
 To enable custom repositories:
     yum-config-manager --enable <repo>
[opc@db19c ~]$
```

__2. Python3のインストール__
まず、リポジトリを有効にし、Python 3をインストールしてください。
```
wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/oci_dbaas_ol7repo -O /tmp/oci_dbaas_ol7repo
wget https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com/v1/dbaaspatchstore/DBaaSOSPatches/versionlock_ol7.list -O /tmp/versionlock.list

sudo cp -p /tmp/oci_dbaas_ol7repo /etc/yum.repos.d/ol7.repo
sudo cp -p /etc/yum/pluginconf.d/versionlock.list /etc/yum/pluginconf.d/versionlock.list.bakup
sudo cp -p /tmp/versionlock.list /etc/yum/pluginconf.d/versionlock.list

sudo yum repolist
sudo yum -y install python3 python3-tools
```

__3. OCI-CLIのインストール__
Python 3のインストールを完了した後、<font color=blue>install.sh</font>を実行しOCI-CLIをインストールしてください。
```bash
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
```

__バージョン確認__
インストール完了後、次のコマンドを使用してOCI-CLIとpython3のバージョン情報を取得できます。

```bash
[opc@db19c ~]$ oci -v
3.2.1
[opc@db19c ~]$ python3 -V
Python 3.6.8
```

インストール後、Configファイルを編集し、認証用の設定は必要です。設定方法は、OCI Compute VMまたはOn-Pサーバでの設定と同様で、省略させていただきます。詳細は、[ドキュメント](https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/cliconfigure.htm)を参照してください。

以上です。

----
# 追記
2022年7月、以下の内容を追加しました。

Oracle DB System <font color=blue>19.15</font>のバージョンで、インスタンス新規作成後、OCI-CLIが既にインストールされた状態になっています。これはとても助かりました。

__DBのバージョンの確認__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/b78a83d6-1403-e67e-e9ab-134d64b046d9.png)

__OCI-CLIの確認__
```
[opc@db19cse ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
[opc@db19cse ~]$ oci -v
3.4.4
[opc@db19cse ~]$
```
従来通り、Configファイルの作成は必要です。"oci setup config"から実施してください。

----
__関連記事__
[オラクル・クラウドの個人ブログ一覧](https://qiita.com/liu-wei/items/10152a4fec813c1b7d98)
[便利なOCI CLIコマンド例](https://qiita.com/letian/items/ed30da7a4d37a56ba8bc)
[OCI-CLIについてのFAQ (よくある質問)](https://qiita.com/letian/items/890e3f285c0dff93509f)

__ドキュメント__
[OCI-CLI Quickstart](https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/cliinstall.htm)