Oracle Cloud Developer Imageを使って、OCI CLI環境を簡単に構築

Oracle Cloud Infrastructure（以下、OCI）で、Computeやデータベースの起動・停止など、各種管理操作を自動で行うのに OCI CLIを利用することが多いと思いますが、お客様によっては、このOCI CLI環境を構築する作業のハードルが高いケースがあります。

今回はOCI CLI環境をセットアップ済の Oracle Cloud Developer Imageを使って、簡単にOCI CLI環境を構築する方法を記載します。

### 0.Oracle Cloud Developer Imageとは？

Oracle Cloud Developer Imageはオラクル社が提供する開発者用のイメージで、あらかじめ開発者が必要とする各種環境がセットアップされています。（OSはOracle Linuxです）
詳細は以下のオラクルクラウド・マーケットプレイスの記載を参照いただければと思いますが、このイメージのコンポーネントの1つとして、OCI CLIが含まれています。
https://cloudmarketplace.oracle.com/marketplace/ja_JP/listing/91010799

### 1.Oracle Cloud Developer Imageを元にComputeインスタンスを作成

Computeインスタンスの作成についての詳細は各種資料に譲りますが、ポイントはただ１つで、プラットフォーム・イメージにリストされている「Oracle Linux Cloud Developer」イメージを使用することです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694576/7c47698e-cc26-d448-1a7d-566c039e02b2.png)
Computeインスタンスが作成できたら、初期ユーザー「opc」でSSH秘密キーを使って接続します。

### 2.構成ファイルの設定

これだけで、OCI CLIはすでにインストールされているため、残る作業は利用するOCIの環境情報（テナント情報、ユーザー情報など）を設定するだけです。

#### 2-1.テナントのOCIDの確認

OCIクラウド・コンソールの左上にある三本線のメニューアイコンから、「ガバナンスと管理＞テナンシ詳細」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694576/8e3ace05-cb2e-a076-f95d-ebeaf6b442ae.png)

テナントのOCIDをコピーして控えておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694576/b5f99605-d61c-18b5-3cbe-014b8edf40ff.png)

#### 2-2.ユーザーのOCIDの確認

OCIクラウド・コンソールの左上にある三本線のメニューアイコンから、「アイデンティティとセキュリティ＞ユーザー」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694576/0c3cf180-78bf-fd8c-9f41-60e0d7a1f0d8.png)

OCI CLIで利用するユーザーを選択し、ユーザーのOCIDをコピーして控えておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694576/059be21d-85b0-a388-b11b-4f1dbfa6ef38.png)

#### 2-3.構成ファイルの設定

Computeインスタンスに接続し、以下のコマンドを実行します。

`oci setup config`

```
[opc@developer ~]$ oci setup config
    This command provides a walkthrough of creating a valid CLI config file.

    The following links explain where to find the information required by this
    script:

    User API Signing Key, OCID and Tenancy OCID:

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#Other

    Region:

        https://docs.cloud.oracle.com/Content/General/Concepts/regions.htm

    General config documentation:

        https://docs.cloud.oracle.com/Content/API/Concepts/sdkconfig.htm
```

構成情報について聞かれるので、以下のとおり入力します。

・Enter a location for your config [/home/opc/.oci/config]:
　　=> そのまま改行（configファイルは /home/opc/.oci/config に作成されます）

・Enter a user OCID:
　　=> 先ほど控えたユーザーのOCIDを入力

・Enter a tenancy OCID:
　　=> 先ほど控えたテナントのOCIDを入力

・Enter a region by index or name(e.g.
1: ap-chiyoda-1, 2: ap-chuncheon-1, 3: ap-hyderabad-1, 4: ap-melbourne-1, 5: ap-mumbai-1, 6: ap-osaka-1, 7: ap-seoul-1, 8: ap-sydney-1, 9: ap-tokyo-1, 10: ca-montreal-1, 11: ca-toronto-1, 12: eu-amsterdam-1, 13: eu-frankfurt-1, 14: eu-zurich-1, 15: me-dubai-1, 16: me-jeddah-1, 17: sa-santiago-1, 18: sa-saopaulo-1, 19: sa-vinhedo-1, 20: uk-cardiff-1, 21: uk-gov-cardiff-1, 22: uk-gov-london-1, 23: uk-london-1, 24: us-ashburn-1, 25: us-gov-ashburn-1, 26: us-gov-chicago-1, 27: us-gov-phoenix-1, 28: us-langley-1, 29: us-luke-1, 30: us-phoenix-1, 31: us-sanjose-1):
　　=> 利用リージョンの番号を入力
　　　（日本の場合は「6: ap-osaka-1」または「9: ap-tokyo-1」）

・Do you want to generate a new API Signing RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]:
　　=> Y（ここで、APIキーを生成）

・Enter a directory for your keys to be created [/home/opc/.oci]:
　　=> そのまま改行（APIキーの作成先 → /home/opc/.oci）

・Enter a name for your key [oci_api_key]:
　　=> そのまま改行（APIキーの名前 → oci_api_key）

・Enter a passphrase for your private key (empty for no passphrase):
　　=> そのまま改行（APIキーのパスフレーズなし）

```
Enter a location for your config [/home/opc/.oci/config]:
Enter a user OCID: ocid1.user.oc1..aaaaaaaabbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffff
Enter a tenancy OCID: ocid1.tenancy.oc1..aaaaaaaabbbbbbbbccccccccddddddddeeeeeeeeffffffff
Enter a region by index or name(e.g. 1: ap-chiyoda-1, 2: ap-chuncheon-1, 3: ap-hyderabad-1, 4: ap-melbourne-1, 5: ap-mumbai-1,
6: ap-osaka-1, 7: ap-seoul-1, 8: ap-sydney-1, 9: ap-tokyo-1, 10: ca-montreal-1, 11: ca-toronto-1, 12: eu-amsterdam-1, 13: eu-frankfurt-1, 14: eu-zurich-1, 15: me-dubai-1,
16: me-jeddah-1, 17: sa-santiago-1, 18: sa-saopaulo-1, 19: sa-vinhedo-1, 20: uk-cardiff-1,
21: uk-gov-cardiff-1, 22: uk-gov-london-1, 23: uk-london-1, 24: us-ashburn-1, 25: us-gov-ashburn-1,
26: us-gov-chicago-1, 27: us-gov-phoenix-1, 28: us-langley-1, 29: us-luke-1, 30: us-phoenix-1,
31: us-sanjose-1): 9
Do you want to generate a new API Signing RSA key pair? (If you decline you will be asked to supply the path to an existing key.) [Y/n]: Y
Enter a directory for your keys to be created [/home/opc/.oci]:
Enter a name for your key [oci_api_key]:
Public key written to: /home/opc/.oci/oci_api_key_public.pem
Enter a passphrase for your private key (empty for no passphrase):
Private key written to: /home/opc/.oci/oci_api_key.pem
Fingerprint: 20:6b:ae:51:6d:6d:7d:f4:19:98:53:a3:21:25:53:d4
Config written to /home/opc/.oci/config


    If you haven't already uploaded your API Signing public key through the
    console, follow the instructions on the page linked below in the section
    'How to upload the public key':

        https://docs.cloud.oracle.com/Content/API/Concepts/apisigningkey.htm#How2
```
キーが作成されるディレクトリーに移動すると、configファイルとAPIキー（プライベート、パブリック）が生成されていることがわかります。

```
[opc@developer .oci]$ cd /home/opc/.oci
[opc@developer .oci]$ ls
config  oci_api_key.pem  oci_api_key_public.pem
```

#### 2-4.APIキーの追加

2-2.と同様に、OCIクラウド・コンソールの左上にある三本線のメニューアイコンから、「アイデンティティとセキュリティ＞ユーザー」を選択し、OCI CLIで利用するユーザーを選択します。

左下メニューで「APIキー」を選択し、「APIキーの追加」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694576/a97506ed-cd6e-5a24-1b0c-f036da984caa.png)
APIキーの追加画面で、先ほど生成されたパブリックAPIキー「oci_api_key_public.pem」をアップロードするか、ファイルの中身を貼り付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694576/788ec03f-de86-2402-20f0-83e68872dc2c.png)

### 3.OCI CLIのテスト

構成ファイルの設定のみでOCI CLIの構築は終了です。
実際にOCI CLIを使ってみます。
※OCI CLIのコマンドについては、マニュアル[「Oracle Cloud Infrastructure CLI Command Reference」](https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.3.1/oci_cli_docs/)を参照ください。

以下のコマンドで Object Storage Namaepaceの確認を行ってみます。

`oci os ns get`

```
[opc@developer .oci]$ oci os ns get
{
  "data": "xxxxxxxxxx"
}
```