[OCI] 簡単になったoci cliのインストール手順

oci cli の設定手順が今までより簡単になりました。
configファイルの雛形が作られるようになりました、変更点は、Linux版、PowerShell版共通ですので、ここでは、事例の少ないPowershellでインストール手順をまとめます。

# oci cliのPCへのインストール

- **CMD**を管理者モードで起動して、oci cliのインストール、この部分は以前とは変わっていません。Linux版も変わっていません。

- **powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.ps1'))"**

- oci cli自体はpythonですが、python3のインストールも含めて実行されます。また、pipもインストールされます。むしろpython2などがあると、かえってトラブルになるのでpython系はpipも含めて何も事前には入っていないほうが楽ではないかと思います。

- 対話的に入力する情報は、ここでは従来どおり **空エンター**または**Y** で先に進みます。
  

![image-20210210083718109.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968/9179b04a-833e-be21-a9ab-85944d7e8c9f.png)

ociというコマンドが認識される状態になればここでのインストールは完了です。
## OCI側での設定


## OCI実行対象ユーザーの選択

初期状態でも最低、アカウントは2個はあります、フェデレーテッドが**はい**となっているIDCSユーザーと、フェデレーテッドが**いいえ**となっているIAM ユーザーです。

どちらでも動きますが、特にIAMでなくてはならない理由はないので、あらゆるPaaSサービスが動かせるIDCSユーザーに対して設定することにします。

**ナビゲーション : アイデンティティ > ユーザー** へ移行
![image-20210211181046947.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968/f1f9be13-5e6e-bef9-da1d-74eb49b24dfb.png)

ociを起動する権限を与える対象のユーザーアカウントを選んで

**アイデンティティ > ユーザー > APIキー > APIキーの追加**
![image-20210211175843703.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968/02b1702f-75b8-cdd3-b488-68c68fbfe186.png)



最初はAPIキーはありませんが、ここでは、**APIキー・ペアの生成**を選んでOCI上で生成します。

![image-20210211175959001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968/09fa86b1-6bda-ed8a-7b49-1a0ecb678c19.png)

生成したら、秘密キーと公開キーをダウンロードします。OCI上でAPIキーが生成可能になったのも、最近の機能追加ですので、古い手順書だと、ローカルからのキーのアップロードという手法に確定してますが、今となっては、特に理由なくば、この場でキーを生成したほうが手軽だと思います。

本来必要なのは秘密キーのみですが、公開キーを持っておくと、OCI以外のマシンに対しても公開キーを与えることで、sshログインできるようになるので、後々のために両方ダウンロードしておきます、後からのダウンロードはできません。

続いて **追加**を押すと config ファイルの雛形が表示されます
![image-20210211180600088.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968/d7c1b68f-eb3d-2dfd-480e-fd767e12c04d.png)

右下の**コピー**を押してconfigファイルの雛形をコピーします、この機能が新しくて、今までは、各行のデータを手作業で集めていましたが、それは不要になりました。
## PCへのconfigファイルの登録


**c:\Users\\<ユーザーID>\\** の場所で .oci のサブディレクトリーの作成

**mkdir .oci** で作成

Linuxの場合は、この後 **chmod 600** とやってアクセス制限をかけますが、Windowsでは、これに相当する設定はありません。

もしも、ociコマンド使用時にアクセス範囲が広すぎてセキュアではないというWARNINGが出る場合は、環境変数に

**OCI_CLI_SUPPRESS_FILE_PERMISSIONS_WARNING=True**

という環境変数をOSに仕込むと抑止できますが、最近のversionでは、このエラーは見かけなくなっています、もう不要なのかもしれません。

# configファイルの編集

### **c:\Users\<userid>\.oci\config**　の編集



**c:\Users\\<ユーザーID>\\.oci\config**

の位置に、OCIコンソールからダウンロードしたconfigファイルを配置して #TODOの部分を修正します。

key_file=<path to your private keyfile> # TODO　

となっていた行を下記のイメージで書き換えます

```
[DEFAULT]
user=ocid1.user.oc1..aaaaaaaa27oscni2oxnj2riqaq735flmiebiyqnXXXXXXXXXXsv2gy6bggya
fingerprint=7d:5f:65:77:cb:7b:8a:cc:2e:2f:69:xx:xx:xx:xx:xx
tenancy=ocid1.tenancy.oc1..aaaaaaaav4pe2jbu3nuwxwackpe3bwXXXXXXXXXXup2e2sdpw5ikcm3akf2q
region=sa-saopaulo-1
key_file=c:\Users\<ユーザーID>\.oci\privatekey.pem
```



ここで key_file のパスの書き方は、Windowsの場合はの場合はフルパスで書きます。

Linux Macの場合は ~/.oci/privatekey.pem みたいに書けますが

Windowsの場合は、絶対パスでしか書けません、 %USERHOME% とか $env:USERHOME とか使って書いても、効きません。



## 動作確認

**oci iam user list** 

で、アクセス可能なuser listが出ることの確認

## 今までと何が違うか

**oci setup config**が必須ではない

**config**の雛形が提供された

![image-20210213172635494.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968/50d6e230-fb99-297b-e06d-01dad0eb0097.png)


# 保守

oci cli のインストール時にpipもinstallされているので 更新はpipで行えます。

**oci -v** で現行version確認

管理者モードで **pip install oci-cli**

再度**oci -v** でversionが最新化されたことを確認


# 参考リンク

コマンドライン・インタフェース(CLI)　**公式**

https://docs.oracle.com/ja-jp/iaas/Content/API/Concepts/cliconcepts.htm

github

https://github.com/oracle/oci-cli

Oracle Cloud用の oci cliを導入

https://qiita.com/sugimount/items/63a8cfe1163030ae8804


# まとめ

ちょっとずつインストールが便利になってきています。

従来の導入手順のままでもインストールはできるので、この手順は必須ではないです。

Linux版が主流ですがPowershellでもCMDでもCLIは普通に動きます。

Pythonアプリの最新化はpip installで更新できるのでpip使うべき。

今まで設定ミスして放置していたアカウントのCLIの設定がこの新方法で、どこにあったのかわかりませんでしたが記述ミスを解消して、CLIが復活できました。

**以上**