Oracle Cloudのコマンドライン・インターフェース(CLI)を使えるようにしてみた


# 概要
Oracle Cloudが提供するデータベースPaaSである**Database Cloud Service**と、アプリケーションサーバPaaSである**Java Cloud Service**のインスタンスをそれぞれ作成してみました。

- [Database Cloud Serviceインスタンスを作ってみた](http://qiita.com/shinyay/items/2e7de9c1c3be3428818b)
- [Oracle Java Cloud Serviceインスタンスを作ってみた](http://qiita.com/shinyay/items/a984c4a959a13553661a)

どちらもブラウザ上からGUIで簡単に作成できました。

ただ、インスタンスの作成操作自体をテンプレート化したり、ジョブ化したりといった事を考えると、コマンドラインから操作ができた方がシェルなどに組み込んで便利に使えます。

というわけで、コマンドライン・インタフェース（CLI）を使えるようにしてみました。

# PaaS Service Manager Command Line Interfac (PSM CLI)
Oracle Cloudでは、CLIツールとして　** PaaS Service Manager Command Line Interfac (PSM CLI)**を提供しています。

- [psm CLI Reference](https://docs.oracle.com/cloud/latest/jcs_gs/PSCLI/toc.htm)

このPSM CLIを利用して、Oracle CloudのDatabase Cloud ServiceやJava Cloud Serviceなど各種サービスの作成や管理などの操作をコマンドラインやシェル・スクリプト等からの実施が可能になります。

## PSM CLI 概要

基本的なコマンド・シンタックスは以下のようになります。

```bash
psm [クラウド・サービス名] [コマンド] (help)
```

PSM CLIが2016/9/1時点で対応しているクラウド・サービスは以下のものになります。

|コマンド入力名|サービス名|
|---|---|
|dbcs|Database Cloud Service|
|jcs|Java Cloud Service|
|accs|Application Container Cloud Service|
|ggcs|GoldenGate Cloud Service|
|MySQLCS|MySQL Cloud Serivce|

PSM CLIはマニュアルとして以下に利用方法が記載されています。

- [Oracle Cloud psm CLI Reference](http://docs.oracle.com/cloud/latest/jcs_gs/PSCLI/toc.htm)


## PSM CLIの導入
PSM CLIの導入手順を説明します。
流れは以下のようになります。

0. 前提環境である事の確認
1. PSM CLIのダウンロード
2. PSM CLIのインストール
3. PSM CLIのセットアップ

なお、これらの作業はCLIの使用のためなので違和感ないとは思いますが、何かしらのターミナル環境で実施します。

> ※以下の手順は、Ubuntu16.04上で実施している内容になります。
> 　そのため、Python3とcURLは導入済みとなっていました。

### 0. 前提
PSM CLIをインストールする環境の前提条件です。

- cURLコマンドが使える事
- Python 3.3 以上が入っている事

この前提が満たせていない環境の場合は、それぞれインストールして環境を整える必要があります。

これら前提のインストール方法は、以下が参考になります。
- [Performing Prerequisite Tasks for the Command Line Interface](https://docs.oracle.com/cloud/latest/jcs_gs/PSCLI/GUID-D3ED1BB0-6E02-4AED-8563-5311F312461B.htm#PSCLI-GUID-D3ED1BB0-6E02-4AED-8563-5311F312461B)

以下のようにaptでインストールする事も可能です。

```bash
$ sudo apt install python3
$ sudo apt install curl
```

### 1. PSM CLIのダウンロード
PSM CLIを導入するために、インストールファイルをダウンロードします。
インストールするために必要な情報は以下の3点です。

- Oracle CloudのユーザーID
- Oracle Cloudのパスワード
- Oracle CloudのIdentity Domain名

これらの情報は契約またはトライアル環境申請後にメールで通知されています。

- [(参考)Oracle Cloudのトライアル環境を申し込んでみた:<br>Oracle Cloudのウェルカム・メールの受信](http://qiita.com/shinyay/items/c2739190a60cb5126a9d#5-oraclecloud%E3%81%AE%E3%82%A6%E3%82%A7%E3%83%AB%E3%82%AB%E3%83%A0%E3%83%A1%E3%83%BC%E3%83%AB%E3%81%AE%E5%8F%97%E4%BF%A1)

上記の情報をそれぞれ環境変数に追加します。

```bash
$ export USER=<Oracle CloudのユーザーID>
$ export PASSWD=<Oracle Cloudのパスワード>
$ export IDENTITYDOMAIN=<Oracle CloudのIdentity Domain名>
```

次に、cURLで以下のコマンドを実行します。

```bash
$ curl -v -X GET -u ${USER}:${PASSWD} -H X-ID-TENANT-NAME:${IDENTITYDOMAIN} https://psm.europe.oraclecloud.com/paas/core/api/v1.1/cli/${IDENTITYDOMAIN}/client -o psmcli.zip
```

アクセスしているドメインですが、データセンターによって異なります。

|アメリカ(us)データセンター|ヨーロッパ(emea)データセンター|
|---|---|
|psm.**us**.oraclecloud.com|psm.**europe**.oraclecloud.com|

地域名を表している箇所が異なるので、利用しているデータセンターを確認するようにしてください。

cURLの**-o**オプションで、PSMCLIのインストールファイルを保存しています。

### 2. PSM CLIのインストール
ダウンロードしたpsmcli.zipのインストールには、**pip**が必要になります。
Pythonが入っていても、pipが入っていない方は以下のコマンドインストールしてください。

```bash
$ sudo apt install python3-pip
```

pipでPSM CLIをインストールします。

```bash
$ sudo -H pip3 install -U psmcli.zip
```

### 3. PSM CLIのセットアップ
インストールしたPSM CLIの初期セットアップを行います。
初期セットアップを行わないと、PSM CLIでPaaSの操作を行う事ができません。

設定する項目は以下のものです。

- Oracle CloudのユーザーID
- Oracle Cloudのパスワード
- Oracle CloudのIdentity Domain名
- 使用するIdentity Domainの地域
- 出力フォーマット: デフォルト[JSON]

```bash
$ psm setup
Username: <Oracle CloudのユーザーID>
Password: <Oracle Cloudのパスワード>
Retype Password: <Oracle Cloudのパスワード>
Identity domain: <Oracle CloudのIdentity Domain名>
Region [us]: <us または emea>
Output format [json]: <json または html>
```

セットアップが正常終了すると以下のメッセージが表示されます。

```bash
----------------------------------------------------
'psm setup' was successful. Available services are:

  o MySQLCS : Oracle Oracle MySQL Cloud Service
  o accs : Oracle Application Container Cloud Service
  o dbcs : Oracle Database Cloud Service
  o ggcs : Oracle GoldenGate Cloud Service
  o jcs : Oracle Java Cloud Service
  o stack : Cloud Stack Manager
----------------------------------------------------
```

正常にインストールできると、以下のようにPSM CLIでOracle Cloudをコマンドラインで操作する事が可能になります。


#### 例．Database Cloud Serviceインスタンス一覧表示
```bash
$ psm dbcs services
{
    "uri":"https://psm.europe.oraclecloud.com:443/paas/service/dbcs/api/v1.1/instances/xxxxxxxxxx",
    "service_type":"dbaas",
    "implementation_version":"1.0",
    "services":[
        {
            "service_name":"DB12cHP",
            "version":"12.1.0.2",
            "status":"Running",
            "description":"DB12cHP",
            "identity_domain":"xxxxxxxxxx",
            "creation_time":"Mon Aug 29 14:3:33 UTC 2016",
            "last_modified_time":"Mon Aug 29 14:3:33 UTC 2016",
            "created_by":"shinyay",
            "sm_plugin_version":"16.3.3-137",
            "backup_supported_version":"16.2.3",
            "service_uri":"https://psm.europe.oraclecloud.com:443/paas/service/dbcs/api/v1.1/instances/xxxxxxxxxx/DB12cHP",
            "database_id":"0"
        }
    ],
    "subscriptions":[]
}
```

# まとめ
画面から操作する利便性もありますが、CLIからの柔軟な巧みな操作も必要とされています。
このPSM CLIを使うことで、Oracle Cloudの操作スタイルにも幅が増えそうです。