【OCI】コンピュートインスタンスでOCI CLIの初期設定 (oci setup config)

# 動作環境
### インスタンスの詳細
イメージ: 
Oracle-Linux-7.9-2021.06.20-0 

シェイプ: 
VM.Standard.E2.1.Micro [OCPU数: 1 メモリー(GB): 1]

# 10秒でわかる手順
### 1. yum update * でパッケージアップデート
### 2. oci setup config で初期設定
### 3. WebコンソールでOCIアカウントにAPIキーを登録
### 4. OCI CLIの動作確認

以下、各項目の詳細を記述していきます。

# 1. パッケージアップデート

yumでlinuxのパッケージを一通りアップデートします。

```html
# アップデート可能なパッケージを一覧表示 (optional)
$ sudo yum check-update

# パッケージアップデート
$ sudo yum update *

読み込んだプラグイン ...

~ ログ省略 ~

更新          5 パッケージ

総ダウンロード容量: 10 M
Is this ok [y/d/N]: y <yを入力>
Downloading packages: ...

~ ログ省略 ~

完了しました!
```

アップデートしたパッケージの中にOCI CLIも含まれているので、念のため存在確認しておきます。

```
$ oci -v
2.23.0
```

# 2-1. OCI CLI 初期設定①

セットアップコマンドを実行すると、対話的に初期設定ができます。

```html
$ 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]: <設定ファイルの配置場所を入力 [デフォルトの/home/opc/.oci/configで問題なければ何も入力せずにEnter]>
Enter a user OCID: <OCIアカウントのユーザーOCIDを入力　(調べ方は下記のTips1を参照)>
Enter a tenancy OCID: <OCIアカウントのテナンシOCIDを入力 (調べ方は下記のTips2を参照)>
~ OCI CLI初期設定②に続く ~
```

## [Tips1] OCIアカウントのユーザーOCIDを調べる。
### (1) Webコンソールで、画面右上の[プロファイル]から自身のOCIユーザー名をクリック。
※ ハンバーガーメニューから、[アイデンティティ >> ユーザー >> ユーザーの詳細]でも可能。
![スクリーンショット 2021-06-24 22.44.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357086/051da0a5-cb6b-f027-2932-cabfe76db221.png)

### (2) ユーザー情報タブの[OCID]をコピーする。
![スクリーンショット 2021-06-24 22.49.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357086/4ac02af0-93f6-b616-aad9-586417aebc07.png)
先ほどのコマンドラインに貼り付ければOK！

## [Tips2] OCIアカウントのテナンシOCIDを調べる。
### (1) Webコンソールで、画面右上の[プロファイル]から、[テナンシ: (自身のテナンシ名)]をクリック。
※ ハンバーガーメニューから、[管理 >> テナンシ詳細]でも可能。
![スクリーンショット 2021-06-24 22.44.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357086/051da0a5-cb6b-f027-2932-cabfe76db221.png)

### (2) テナンシ情報タブの[OCID]をコピーする。
![スクリーンショット 2021-06-24 23.03.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357086/bca8a18b-0a45-b6c5-c3f5-87adf856bd29.png)
先ほどのコマンドラインに貼り付ければOK！

# 2-2. OCI CLI 初期設定②

```html
~ OCI CLI初期設定①の続き ~
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: uk-cardiff-1, 20: uk-gov-cardiff-1,
21: uk-gov-london-1, 22: uk-london-1, 23: us-ashburn-1, 24: us-gov-ashburn-1, 25: us-gov-chicago-1,
26: us-gov-phoenix-1, 27: us-langley-1, 28: us-luke-1, 29: us-phoenix-1, 30: us-sanjose-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]: <CLI認証用のAPIキーを生成する場合はYを(既存のAPIキーを利用する場合はnを)入力>
Enter a directory for your keys to be created [/home/opc/.oci]: <前述した認証用APIキーの生成先ディレクトリを入力 [デフォルトの/home/opc/.ociで問題なければ何も入力せずにEnter]>
Enter a name for your key [oci_api_key]: <前述した認証用APIキーのファイル名を入力　[デフォルトの"oci_api_key"で問題なければ何も入力せずにEnter]>
Public key written to: /home/opc/.oci/oci_api_key_public.pem
Enter a passphrase for your private key (empty for no passphrase): <認証用APIキーの秘密鍵に設定するパスワードを入力 [パスワードを設定しない場合は何も入力せずにEnter]>
Private key written to: /home/opc/.oci/oci_api_key.pem
Fingerprint: (フィンガープリントが表示される)
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



```

以上で、OCI CLIを利用するためのconfigファイルが自動的に生成されます。

# 3. WebコンソールでOCIアカウントに認証用APIキーを登録

最後にWebコンソールからOCI CLI認証用APIキーを登録します。

### (1) Webコンソールで、画面右上の[プロファイル]から自身のOCIユーザー名をクリック。
※ ハンバーガーメニューから、[アイデンティティ >> ユーザー >> ユーザーの詳細]でも可能。
![スクリーンショット 2021-06-24 22.44.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357086/051da0a5-cb6b-f027-2932-cabfe76db221.png)

### (2) 画面左下の[リソース]から[APIキー]を選択
![スクリーンショット 2021-06-24 23.18.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357086/f30b43ca-157b-a3c1-fa92-c66faf4095f7.png)

### (3) 画面中央下部に表示される[APIキー]から[APIキーの追加]をクリック。
![スクリーンショット 2021-06-24 23.23.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357086/35f26f66-fe04-0ce8-9c28-1fed0c9173e9.png)

### (4) OCI CLI初期設定で生成(または選択)した認証用APIキーの公開鍵を貼り付ける。

※ 先ほどのOCI CLI初期設定時に認証用APIキー生成した場合、認証用APIキーの公開鍵は、コマンドラインからcatなどで確認できます。

```
$ cat .oci/oci_api_key_public.pem 
-----BEGIN PUBLIC KEY-----
abcdefg.....
...
.....vwxyz
-----END PUBLIC KEY-----
```

以下のように、公開鍵の内容をそのままコピペして貼り付けた後、画面下部の[追加]を押してください。
![スクリーンショット 2021-06-24 23.30.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357086/c5d10161-f855-c46f-c550-8053890c2ebb.png)

先ほどの[APIキー]の欄にフィンガープリントが作成されれば成功です！

# 4. OCI CLIの動作確認

最後にOCI CLIが正常に動作されるかを検証します。

**[注意!!!]
前項「3. WebコンソールでOCIアカウントに認証用APIキーを登録」のフィンガープリントが作成された後、OCI CLIが正常に動作可能となるまでに多少時間がかかります。もし動作確認でエラーになった場合は、数分程度時間をおいてから再実行してみてください。**

リージョンの一覧を表形式で表示してみます。コマンドを実行して以下のような結果が得られれば、動作確認は完了です!

```
$ oci iam region list --output table
+-----+----------------+
| key | name           |
+-----+----------------+
| AMS | eu-amsterdam-1 |
| BOM | ap-mumbai-1    |
| CWL | uk-cardiff-1   |
| DXB | me-dubai-1     |
| FRA | eu-frankfurt-1 |
| GRU | sa-saopaulo-1  |
| HYD | ap-hyderabad-1 |
| IAD | us-ashburn-1   |
| ICN | ap-seoul-1     |
| JED | me-jeddah-1    |
| KIX | ap-osaka-1     |
| LHR | uk-london-1    |
| MEL | ap-melbourne-1 |
| NRT | ap-tokyo-1     |
| PHX | us-phoenix-1   |
| SCL | sa-santiago-1  |
| SJC | us-sanjose-1   |
| SYD | ap-sydney-1    |
| VCP | sa-vinhedo-1   |
| YNY | ap-chuncheon-1 |
| YUL | ca-montreal-1  |
| YYZ | ca-toronto-1   |
| ZRH | eu-zurich-1    |
+-----+----------------+
```

# 参考リンク
[OCI CLIを利用してコマンドラインからOCIを操作する方法 | アシスト現場ブログ](https://www.ashisuto.co.jp/db_blog/article/N0021_OracleCloud_20200626.html)
[CLIの使用 | Oracleヘルプセンター](https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/cliusing.htm)