Oracle Cloud 東日本リージョン向けに PSM CLI を使ってみた

## 説明
PaaS Service Manager Command Line Interface (**PSM CLI**) は、Oracle Cloud をコマンドラインから操作するための **CLI ツール** です。

- [公式マニュアル: https://docs.oracle.com/en/cloud/paas/java-cloud/pscli/](https://docs.oracle.com/en/cloud/paas/java-cloud/pscli/)

以前、この PSM CLI を使って **Database Cloud Service** や、Java Cloud Service を作成を行いました。

- [Database Cloud ServiceのインスタンスをPSM CLIで作成してみた](https://qiita.com/shinyay/items/e6e0c038090039dabb18)
- [Java Cloud ServiceのインスタンスをPSM CLIで作成してみた](https://qiita.com/shinyay/items/f106463d656401ced368)

この時に作成を行った環境（リージョン）は海外のデータセンター（ヨーロッパやアメリカ）でした。当時（2016年）には、まだ国内データセンターが作られていなかったので海外のデータセンターを使用していました。

その後、2017年の3月から日本国内にデータセンターが作られているので、今回は国内データセンターを利用して PSM CLI を利用してみたいと思います。

**※**
後述していますが、2018/1/8 時点では、アメリカやヨーロッパのデータセンターのようには行えなかったので簡単な改造を行っています。

## 前提
- Oracle Cloud 東日本リージョン を利用可能なアカウントを持っている事
    - トライアルアカウント 可
- 以下のツールが利用できる CLI 環境がある事
    - [cURL](https://curl.haxx.se/)
    - [Python 3.3 以降](https://www.python.org/)

- PSM CLI をインストールしている事
    - インストール方法は以下の記事、またはマニュアルを見てください
        - [Oracle Cloudのコマンドライン・インターフェース(CLI)を使えるようにしてみた](https://qiita.com/shinyay/items/a3773b37fdbb677e52b1)
        - [公式マニュアル](https://docs.oracle.com/cd/E83857_01/paas/java-cloud/pscli/abouit-paas-service-manager-command-line-interface.html)

## 手順
### 1. 従来通りに `psm setup`
PSM CLI の初期設定（ユーザ・パスワードの設定や、リージョンの指定）は、**psm setup** コマンドで実施します。

#### 1.1. 入力項目

|入力項目|入力値|
|--------|------|
|Username|Oracle Cloud アカウント ID|
|Password|Oracle Cloud アカウント Password|
|Identtity domain|使用している環境のアイデンティドメイン名|
|Region|jpcom<br>日本リージョンは jpcom<br>アメリカ：us<br>ヨーロッパ：emea|

#### 1.2. `psm setup` コマンド実施

psm setup コマンドを実行すると以下のようになります。

```
$ psm setup
Username: shinyay
Password: ********
Retype Password: ********
Identity domain: shinyaydomain
Region [us]: jpcom
Invalid region. Valid values are [us, emea, aucom]. Please re-enter valid value for 'Region [us]'.
```

リージョンで **jpcom** を入力すると、有効ではないとエラーになってしまいます。
2018/1/8 時点で PSMCLI ツールでデフォルトで有効なリージョンは、「us」「emea」「aucom」となっているようです。

### 2. PSM CLI ツールの改造

コマンド引数のバリデーションチェックで jpcom が弾かれているだけのようなので、jpcom が有効なリージョンとなるように PSM CLI ツールを改造してみたいと思います。

#### 2.1. site-packages ディレクトリの確認

PSM CLI ツールは、**pip** を使ってインストールしていました。

- [参考](https://qiita.com/shinyay/items/a3773b37fdbb677e52b1#2-psm-cli%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

そのため、この PSM CLI モジュールは、**${Pythonインストールディレクトリ}/site-packages** に配置されています。

それぞれの環境で site-packages ディレクトリを確認してみてください。

ちなみに私の環境では次のようになっています。

- Windows 環境
    - `C:\msys2\usr\lib\python3.4\site-packages`
- Mac 環境
    - `/usr/local/lib/python3.6/site-packages`

#### 2.2. supported-regions.json の編集

site-packages が確認できたら、配下のディレクトリ **opaascli** を開きます。
その中に **supported-regions.json** が見つかると思います。
これを開いてみます。

```json
{
	"defaultURI":"https://psm.region.oraclecloud.com",
	"regions" : {
		"us" : "us",
		"emea" : "europe",
		"aucom" : "aucom"
	}
}
```

JSON 形式でリージョンが記載されている事が確認できます。
ここに jpcom を追加して、以下のように編集します。

```json
{
	"defaultURI":"https://psm.region.oraclecloud.com",
	"regions" : {
		"us" : "us",
		"emea" : "europe",
		"aucom" : "aucom",
		"jpcom" : "jpcom"
	}
}
```

### 3. psm setup コマンドのリトライ

jpcom リージョンを追加したので、psm setup コマンドを再度実行してみます。

```
$ psm setup
Username: shinyay
Password: ********
Retype Password: ********
Identity domain: shinyaydomain
Region [us]: jpcom
Output format [short]:
----------------------------------------------------
'psm setup' was successful. Available services are:

  o ANALYTICS : Oracle Analytics Cloud
  o APICS : Oracle API Platform Cloud Service
  o BDCSCE : Oracle Big Data Cloud
  o BigDataAppliance : Oracle Big Data Cloud Service
  o CONTAINER : Oracle Container Cloud Service
  o IDCSControlPlane : Oracle Identity Cloud Service
  o IOTAssetMon : Oracle IoT Asset Monitoring Cloud Service
  o IOTConnectedWrker : Oracle IoT Connected Worker Cloud Service
  o IOTEnterpriseApps : Oracle Internet of Things Cloud - Enterprise
  o IOTFleetMon : Oracle IoT Fleet Monitoring Cloud Service
  o IOTProdMonitoring : Oracle IoT Production Monitoring Cloud Service
  o IOTSvcAsset : Oracle IoT Asset Monitoring CX Cloud Service
  o jcs : Oracle Java Cloud Service
  o MySQLCS : Oracle MySQL Cloud Service
  o OEHCS : Oracle Event Hub Cloud Service
  o OEHPCS : Oracle Event Hub Cloud Service - Dedicated
  o SOA : Oracle SOA Cloud Service
  o accs : Oracle Application Container Cloud Service
  o caching : Oracle Application Cache
  o dbcs : Oracle Database Cloud Service
  o ggcs : Oracle GoldenGate Cloud Service
  o stack : Oracle Cloud Stack Manager
----------------------------------------------------
```

jpcom のバリデーションを通過し、正常に初期設定が完了しました。

### 4. 動作確認

Application Container Cloud Service にデプロイしているアプリケーション情報を表示させてみます。

```
$ psm accs app -n shinyayApp
 Application:         shinyayApp
 Status:              RUNNING
 Type:                web
 URL:                 https://shinyayApp-shinyaydomain.apaas.ap5.oraclecloud.com
 Last Deployed On:    2018-01-08T02:35:05.860+0000
 Created On:          2018-01-08T02:35:05.876+0000
```

`psm accs app` コマンドでデプロイされている shinyayApp が稼働中である事が確認できました。

## まとめ
CLI ツールが使えると、クラウドサービスの操作やアプリケーションのデプロイなど簡単に素早く実施できて便利ですよね。個人的には、GUIを使うよりコマンドを叩いている方が気持ち良いです。
2018/1/8 時点では、PSM CLI ツールが日本リージョンにデフォルトでは対応していなくて残念な感じですが、JSON ファイルに１行追加する事で対応もできたので知らない間に対応されるのかなと思います。