[Oracle Cloud] Windows へ  OCIコマンドライン・インタフェース(CLI) を クイック・インストールしてみてみた

Oracle Cloud Infrastructure(OCI) の OCIコマンドライン・インタフェース(CLI)は、MSIインストーラを使用して、Windows にインストールできます。
ということで、Windows 10 へクイックに OCI CLI をインストールしてみてみます。


# ■ 1. OCI CLI MSIインストーラをダウンロード
Windows用のOCI CLI MSIインストーラをGitHubからダウンロードします。
今回 WIndows 10 にインストールするので、今回は oci-cli-3.38.1-Windows-Server-Installer.msi をダウンロードします。

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

![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/be9996a6-dcbc-3e2b-fc07-5149097727cb.jpeg)
# ■ 2. インストール
ダウンロードしたインストーラの実行ファイルを実行します。
**1) MSIインストーラ実行**
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/03d23b2f-44ce-cc87-4415-bd15a9973507.png)



**2) oci-cli Setup画面**
CLIをインストールするシステム上のローカルディレクトリを選択し、[Next]をクリック
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/e5257bf4-d77b-fb37-b05c-5ce7de6b794c.png)



**3) Install oci-cli**
インストール中
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/480bb4cc-a863-0f48-4981-271de1780406.png)


**4) インストール完了**
インストーラが終了したら、[Finish]をクリックして完了です。
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/67f1b4cb-754c-764f-f3ad-030d5dbe0460.png)


**5) インストール確認**
PowerShellで OCI-CLI Versionを確認

```
PS C:\Users\Shiro> oci -v
    3.37.12
```





# ■ 3. OCI CLI設定
**1) 必要情報確認**
CLIを実行する OCIのAPIユーザー、Tenancy、Compartments情報を取得しておきます
```
・OCI APIユーザー情報
    USer名：shirok
    User OCID：ocid1.user.oc1..aaaaaaaaka3gjm4yyq6hrx4geayb77o6hr5kgcipyvs7a

・Tenancy 情報
    Tenancy名：ocitest
    Tenancy OCID： ocid1.tenancy.oc1..aaaaaaaaka3gjm4yyq6hrx4geayb77o6hr5kgcipyvs

・Compartments情報
    Compartment名：POC
    Compartment OCID： ocid1.compartment.oc1..aaaaaacvoyfoxo6s4h3siefgto2bg4dciubirdrg3b
```

**2) Setup実行**
```
PS C:\Users\oracle> 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 [C:\Users\oracle\.oci\config]:
	Enter a user OCID:
	Enter a user OCID: ocid1.user.oc1..aaaaaaaaka3gjm4yyq6hrx4geayb77o6hr5kgcipyvs7a
	Enter a tenancy OCID: ocid1.tenancy.oc1..aaaaaaaaka3gjm4yyq6hrx4geayb77o6hr5kgcipyvs
	Enter a region by index or name(e.g.
	1: af-johannesburg-1, 2: ap-chiyoda-1, 3: ap-chuncheon-1, 4: ap-dcc-canberra-1, 5: ap-hyderabad-1,
	6: ap-ibaraki-1, 7: ap-melbourne-1, 8: ap-mumbai-1, 9: ap-osaka-1, 10: ap-seoul-1,
	11: ap-singapore-1, 12: ap-sydney-1, 13: ap-tokyo-1, 14: ca-montreal-1, 15: ca-toronto-1,
	16: eu-amsterdam-1, 17: eu-dcc-dublin-1, 18: eu-dcc-dublin-2, 19: eu-dcc-milan-1, 20: eu-dcc-milan-2,
	21: eu-dcc-rating-1, 22: eu-dcc-rating-2, 23: eu-dcc-zurich-1, 24: eu-frankfurt-1, 25: eu-frankfurt-2,
	26: eu-jovanovac-1, 27: eu-madrid-1, 28: eu-madrid-2, 29: eu-marseille-1, 30: eu-milan-1,
	31: eu-paris-1, 32: eu-stockholm-1, 33: eu-zurich-1, 34: il-jerusalem-1, 35: me-abudhabi-1,
	36: me-dcc-doha-1, 37: me-dcc-muscat-1, 38: me-dubai-1, 39: me-jeddah-1, 40: mx-monterrey-1,
	41: mx-queretaro-1, 42: sa-bogota-1, 43: sa-santiago-1, 44: sa-saopaulo-1, 45: sa-valparaiso-1,
	46: sa-vinhedo-1, 47: uk-cardiff-1, 48: uk-gov-cardiff-1, 49: uk-gov-london-1, 50: uk-london-1,
	51: us-ashburn-1, 52: us-chicago-1, 53: us-gov-ashburn-1, 54: us-gov-chicago-1, 55: us-gov-phoenix-1,
	56: us-langley-1, 57: us-luke-1, 58: us-phoenix-1, 59: us-saltlake-2, 60: us-sanjose-1): 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]:
	Enter a directory for your keys to be created [C:\Users\oracle\.oci]:
	Enter a name for your key [oci_api_key]:
	Public key written to: C:\Users\oracle\.oci\oci_api_key_public.pem
	Enter a passphrase for your private key ("N/A" for no passphrase):
	Enter a passphrase for your private key ("N/A" for no passphrase):
	Enter a passphrase for your private key ("N/A" for no passphrase):
	Enter a passphrase for your private key ("N/A" for no passphrase):
	Enter a passphrase for your private key ("N/A" for no passphrase):
	Enter a passphrase for your private key ("N/A" for no passphrase):
	Enter a passphrase for your private key ("N/A" for no passphrase):
	Enter a passphrase for your private key ("N/A" for no passphrase):
	Repeat for confirmation:
	Private key written to: C:\Users\oracle\.oci\oci_api_key.pem
	Fingerprint: ac:ae:b6:f8:db:8a:ac:d2:8c:f1:6b:13:34
	Config written to C:\Users\oracle\.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
```


**2) Setup実行確認**
oci setup config を実行すると ~/.oci ディレクトリとその配下に必要ファイルが作成されます

```
PS C:\Users\oracle> ls ~/.oci
	
	
	    ディレクトリ: C:\Users\oracle\.oci
	
	
	Mode                 LastWriteTime         Length Name
	----                 -------------         ------ ----
	-a----        2024/03/11     18:17            303 config
	-a----        2024/03/11     18:17           1704 oci_api_key.pem
	-a----        2024/03/11     18:17            451 oci_api_key_public.pem



PS C:\Users\oracle\.oci> cat .\config
	[DEFAULT]
	user=ocid1.user.oc1..aaaaaaaaka3gjm4yyq6hrx4geayb77o6hr5kgcipyvs7a
	fingerprint=ac:ae:b6:f8:db:8a:ac:d2:8c:f1:6b:13:34
	key_file=C:\Users\oracle\.oci\oci_api_key.pem
	tenancy=ocid1.tenancy.oc1..aaaaaaaaka3gjm4yyq6hrx4geayb77o6hr5kgcipyvs
	region=ap-tokyo-1
```

# ■ 4. CLI鍵をOCIユーザーに登録
CLIは鍵認証でアクセスされるので作成されたPublic Kye をOCI ユーザーに登録してCLIアクセスできるようにします
**1) Public鍵(oci_api_key_public.pem)確認**
この oci_api_key_public.pemの内容を CLIを実行する OCIユーザーの API Keyに登録します。
```
PS C:\Users\oracle> cat ~/.oci/oci_api_key_public.pem
	-----BEGIN PUBLIC KEY-----
	BJki8jANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArtez3m24O11PHww6B
	Atemb/e3BPgSeYHxVWASmTs4vDVARNSD5jvxacKp1SPAPyYH2SVOaYqvFtqx6
	PqUYWJhPqdfuOJU+T05XX/I3lOMHOLdym/z0E6pM3lAmInBOq30AgCLIa/bjA
	SoozH5OfqUlN/kVeEIrmqJ2a0AFGpo2ftemHhwyBfiCM6IsC5iZ+CnMFHGQ/U
	FojmV7CUDzqWwId9TOjaZ0Nmbg2+K91vyq7fZoh0ujF17usTNBfM/faJcfARh
	2sgbHx7A+4caNH2JyqYszUhIzde9vNmisb+vzQtrIVfWDXLEKMefkD9Z9zP0P
	Au5G3
	-----END PUBLIC KEY-----
```


**2) Public鍵をOCIユーザーに登録**


**2) 登録するユーザー画面
WEBコンソール右上の人型アイコンからログインしているユーザー画面に遷移
![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/80097995-b4fb-3032-d875-bdabcabff11d.jpeg)


**3) APIキーの追加**
・左ペインにある[APIキーの追加]をクリックしPublic鍵(oci_api_key_public.pem)を登録
![03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/9e99b8df-da6e-90a5-3c45-029e0ecf3dd5.jpeg)








# ■ 5. OCI CLI実行テスト
デフォルトでは、コマンドに対するすべてのレスポンスはJSON形式で返されます。
たとえば、リージョンのリストを取得するコマンドを発行すると、次のレスポンスが戻されます。
```
PS C:\Users\oracle\.oci>  oci iam region list
{
  "data": [
    {
      "key": "AMS",
      "name": "eu-amsterdam-1"
    },
    {
      "key": "ARN",
      "name": "eu-stockholm-1"
    },
    {
      "key": "AUH",
      "name": "me-abudhabi-1"
    },
    {
      "key": "BOG",
      "name": "sa-bogota-1"
    },
    {
      "key": "BOM",
      "name": "ap-mumbai-1"
    },
    {
      "key": "CDG",
      "name": "eu-paris-1"
    },
    {
      "key": "CWL",
      "name": "uk-cardiff-1"
    },
    {
      "key": "DXB",
      "name": "me-dubai-1"
    },
    {
      "key": "FRA",
      "name": "eu-frankfurt-1"
    },
    {
      "key": "GRU",
      "name": "sa-saopaulo-1"
    },
    {
      "key": "HYD",
      "name": "ap-hyderabad-1"
    },
    {
      "key": "IAD",
      "name": "us-ashburn-1"
    },
    {
      "key": "ICN",
      "name": "ap-seoul-1"
    },
    {
      "key": "JED",
      "name": "me-jeddah-1"
    },
    {
      "key": "JNB",
      "name": "af-johannesburg-1"
    },
    {
      "key": "KIX",
      "name": "ap-osaka-1"
    },
    {
      "key": "LHR",
      "name": "uk-london-1"
    },
    {
      "key": "LIN",
      "name": "eu-milan-1"
    },
    {
      "key": "MAD",
      "name": "eu-madrid-1"
    },
    {
      "key": "MEL",
      "name": "ap-melbourne-1"
    },
    {
      "key": "MRS",
      "name": "eu-marseille-1"
    },
    {
      "key": "MTY",
      "name": "mx-monterrey-1"
    },
    {
      "key": "MTZ",
      "name": "il-jerusalem-1"
    },
    {
      "key": "NRT",
      "name": "ap-tokyo-1"
    },
    {
      "key": "ORD",
      "name": "us-chicago-1"
    },
    {
      "key": "PHX",
      "name": "us-phoenix-1"
    },
    {
      "key": "QRO",
      "name": "mx-queretaro-1"
    },
    {
      "key": "SCL",
      "name": "sa-santiago-1"
    },
    {
      "key": "SIN",
      "name": "ap-singapore-1"
    },
    {
      "key": "SJC",
      "name": "us-sanjose-1"
    },
    {
      "key": "SYD",
      "name": "ap-sydney-1"
    },
    {
      "key": "VAP",
      "name": "sa-valparaiso-1"
    },
    {
      "key": "VCP",
      "name": "sa-vinhedo-1"
    },
    {
      "key": "YNY",
      "name": "ap-chuncheon-1"
    },
    {
      "key": "YUL",
      "name": "ca-montreal-1"
    },
    {
      "key": "YYZ",
      "name": "ca-toronto-1"
    },
    {
      "key": "ZRH",
      "name": "eu-zurich-1"
    }
  ]
}
```



# ■ 参考
　・[コマンドライン・インタフェース(CLI)](https://docs.oracle.com/ja-jp/iaas/Content/API/Concepts/cliconcepts.htm)
　・[クイックスタート](https://docs.oracle.com/ja-jp/iaas/Content/API/SDKDocs/cliinstall.htm)