Database Cloud ServiceのインスタンスをPSM CLIで作成してみた


# 概要
Oracle CloudでCLIを使えるようにする手順を以前投稿しました。

- [Oracle Cloudのコマンドライン・インターフェース(CLI)を使えるようにしてみた](http://qiita.com/shinyay/items/a3773b37fdbb677e52b1)

それでは、このCLIであるPSM CLIを使ってDatabase Cloud Serviceのインスタンスを作成してみます。

## PSM CLI 使用方法概要

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

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

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

```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 使用方法 - Database Cloud Service
Database Cloud ServiceでのPSM CLIで実施できるコマンドは、2016/9/1時点で以下のものがあります。

### インスタンス・ライフサイクル
- Database Cloud Serviceのインスタンスの作成・削除や停止といった、ライフサイクルに関する操作

|コマンド|説明|
|---|---|
|psm dbcs services|作成済みインスタンス一覧表示|
|psm dbcs service|作成済みインスタンスの詳細情報表示|
|psm dbcs create-service|インスタンスの作成|
|psm dbcs delete-service|インスタンスの削除|
|psm dbcs restart|インスタンスの再起動|
|psm dbcs stop|インスタンスの停止|
|psm dbcs start|インスタンスの開始|

### スケーリング
- Database Cloud Serviceのインスタンスに割り当てられているシェイプ（CPU/メモリ）のサイズ変更

|コマンド|説明|
|---|---|
|psm dbcs scale-up|スケールアップ<br>シェイプの追加|
|psm dbcs scale-down|スケールダウン<br>シェイプの縮小|

### アクセス・コントロール
- Database Cloud Serviceのインスタンスへのアクセス・ルール（アクセス系経路や開放ポート）の設定構成

|コマンド|説明|
|---|---|
|psm dbcs access-rules|アクセス・ルールの一覧表示|
|psm dbcs create-access-rule|アクセス・ルールの作成|
|psm dbcs delete-access-rule|アクセス・ルールの削除|
|psm dbcs disable-access-rule|アクセス・ルールの無効化|
|psm dbcs enable-access-rule|アクセス・ルールの有効化|

### バックアップ・リカバリ
- Database Cloud Serviceのインスタンスのバックアップ取得やバックアップからのリカバリ操作

|コマンド|説明|
|---|---|
|psm dbcs view-backups|取得済みのバックアップ一覧表示|
|psm dbcs backup|バックアップの取得|
|psm dbcs recover|バックアップからのリカバリ|

### パッチ適用
- Database Cloud Serviceのインスタンスへのパッチ適用操作

|コマンド|説明|
|---|---|
|psm dbcs applied-patches|適用済みパッチの一覧表示|
|psm dbcs available-patches|適用可能パッチの一覧表示|
|psm dbcs precheck-patch|パッチ適用の事前確認|
|psm dbcs patch|パッチ適用|
|psm dbcs rollback|適用したパッチのロールバック|

### 操作状況表示
- PSM CLIで実施した操作（ジョブ）の進行状態の表示

|コマンド|説明|
|---|---|
|psm dbcs operation-status|ジョブの状態表示|

## PSM CLIによるインスタンス作成 - Database Cloud Service
PSM CLIを利用してDatabase Cloud Servieのインスタンスを作成します。

作成する際に使用するコマンドは、「**psm dbcs create-service**」です。

このコマンドに関するリファレンスは、マニュアルの以下の箇所に記載があります。

- [psm dbcs create-service](http://docs.oracle.com/cloud/latest/jcs_gs/PSCLI/GUID-841FB58C-BC8D-4D81-953E-1C204ECAE928.htm#PSCLI-GUID-841FB58C-BC8D-4D81-953E-1C204ECAE928)

### psm dbcs create-service シンタックス
「**psm dbcs create-service**」は、以下のようなシンタックスで利用します。

```bash
psm dbcs create-service -c|--config-payload json-file [-of|--output-format json|html]
```

構成するDatabase CLoud Serviceインスタンスの情報をJSONファイルで定義しておき、それをコマンド実施時に指定して作成操作を行います。

### Database Cloud Serviceインスタンス構成ペイロードのサンプル
以下に、「**psm dbcs create-service -c**」で指定する構成情報のJSONを用意しました。

- DB12c-HP.json

```DB12c-HP.json
{
  "decription": " Enterprise Edition - High Performance",
  "edition": "EE_HP",
  "level": "PAAS",
  "serviceName": "DB12cHP",
  "shape": "oc3",
  "subscriptionType": "MONTHLY",
  "version": "12.1.0.2",
  "vmPublicKeyText": "<SSH公開鍵テキスト>",
  "parameters": [
    {
      "type": "db",
      "usableStorage": "15",
      "adminPassword": "<DB管理者パスワード>",
      "sid": "ORCL",
      "pdbName": "PDB1",
      "failoverDatabase": "no",
      "backupDestination": "BOTH",
      "cloudStorageContainer": "Storage-<IDENTITY DOMAIN名>\/Container_DBCS",
      "cloudStorageUser": "<Storage Cloudユーザ>",
      "cloudStoragePwd": "<Storage Cloudユーザパスワード>"
    }
  ]
}
```

上記のJSONは、次のような構成内容となっています。

|構成項目|内容|
|---|---|
|DBバージョン|12.1.0.2|
|エディション|[Enterprise Edition - High Performance](https://docs.oracle.com/cd/E60665_01/dbcs_dbaas/CSDBI/GUID-660363B8-0E2F-4A4F-A9BD-70A43F332A16.htm#GUID-6C0B1E17-98A5-4522-A3B9-36EFA05E64F9)|
|シェイプ|[OC3 (1 OCPU / 7.5 GBメモリ)](https://docs.oracle.com/cd/E60665_01/dbcs_dbaas/CSDBI/GUID-660363B8-0E2F-4A4F-A9BD-70A43F332A16.htm#GUID-ABDB48B9-01F5-4F32-AD35-08251F67B641)|
|ストレージサイズ|15GB|

### psm dbcs create-service コマンド実施

```bash
$ psm dbcs create-service -c ./DB12c-HP.json
"Accepted"
Job ID : 1952839
```

「**psm dbcs create-service**」を実施すると、バックエンドでインスタンスの作成操作がJob IDが採番され、IDを元に状況確認が行えます。￥

### インスタンス作成操作状況の確認
インスタンス作成操作状況を確認する際に使用するコマンドは、「**psm dbcs create-service -j <JobID>**」です。

実行すると以下のように状況がJSON形式で表示されます。

```bash
$ psm dbcs operation-status -j 1952839
{
    "activityLogId":1041617,
    "serviceName":"DB12cHP",
    "serviceType":"dbaas",
    "identityDomain":"seprivatee",
    "serviceId":52844,
    "jobId":1952839,
    "startDate":"2016-08-31T12:42:55.015+0000",
    "endDate":"2016-08-31T13:05:10.575+0000",
    "status":"SUCCEED",
    "operationId":52844,
    "operationType":"CREATE_SERVICE",
    "summaryMessage":"CREATE_SERVICE",
    "authDomain":"seprivatee",
    "authUser":"shinyay",
    "initiatedBy":"USER",
    "messages":[
        {
            "activityDate":"2016-08-31T12:42:55.015+0000",
            "message":"Activity Submitted"
        },
        {
            "activityDate":"2016-08-31T12:43:03.857+0000",
            "message":"Activity Started"
        },
        {
            "activityDate":"2016-08-31T12:49:28.431+0000",
            "message":"SSH access to VM [DB_1/vm-1] succeeded..."
        },
        {
            "activityDate":"2016-08-31T13:04:37.487+0000",
            "message":"Oracle Database Server Configuration completed..."
        },
        {
            "activityDate":"2016-08-31T13:04:38.344+0000",
            "message":"Service Reachabilty Check (SRC) of Oracle Database Server [DB12cHP] completed..."
        },
        {
            "activityDate":"2016-08-31T13:04:40.232+0000",
            "message":"Successfully provisioned Oracle Database Server..."
        },
        {
            "activityDate":"2016-08-31T13:05:10.575+0000",
            "message":"Activity Ended"
        }
    ]
}
```

**"message":"Activity Ended"**と表示されるとインスタンス作成操作は終了です。

### 作成済みインスタンス一覧の表示
作成済みのインスタンス一覧を確認する際に使用するコマンドは、「**psm dbcs services**」です。

```bash
$ psm dbcs services
{
    "uri":"https://psm.europe.oraclecloud.com:443/paas/service/dbcs/api/v1.1/instances/seprivatee",
    "service_type":"dbaas",
    "implementation_version":"1.0",
    "services":[
        {
            "service_name":"DB12cHP",
            "version":"12.1.0.2",
            "status":"Running",
            "description":"DB12cHP",
            "identity_domain":"<IDENTITY DOMAIN名>",
            "creation_time":"Wed Aug 31 12:42:54 UTC 2016",
            "last_modified_time":"Wed Aug 31 12:42:54 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/<IDENTITY DOMAIN名>/DB12cHP",
            "database_id":"0"
        }
    ],
    "subscriptions":[]
}
```

このように、**psm dbcs create-service**コマンドで作成したDatabase Cloud Serviceインスタンスが表示されています。

## まとめ
画面からGUIを利用してのDatabase Cloud Serviceのインスタンス作成操作も数ステップで簡単に行えますが、このPSM CLIもテンプレートとなるJSONさえ用意しておけば非常に簡単にインスタンス作成が行えます。

JSONのパラメータのみを変更して、様々なパターンのDatabase Cloud Serviceのインスタンスを作成する事も簡単なので、ブラウザからのGUIと**PSM CLI**を使い分けながらOracle Cloudを利用すると便利です。