Oracle Cloud MySQL Serviceでは、GUIベースのダッシュボードだけでは無く、APIやPaaS Service Manager (PSM)コマンドライン・インタフェース(CLI)を利用してインスタンスを管理する事が可能です。GUIでの管理も使いやすくて良いのですが、Provisioningの自動化による工数削減にはAPIかCLIの活用が必用になるかと思います。
今回は、PSMを利用したインスタンスの作成と削除方法を此方で紹介します。先ずは、MySQL Cloud Serviceを検証環境等で活用してみて頂ければと思います。
Japanese Manual
https://docs.oracle.com/cd/E60665_01/jcs_gs/PSCLI/GUID-A63D73BD-4F22-472D-9E04-D998CEE68A00.htm
https://docs.oracle.com/cd/E60665_01/jcs_gs/PSCLI/toc.htm
インストール方法の詳細に関しては、シンプルですので上記マニュアルを確認下さい。
基本的には、以下の2ステップでインストールします。
STEP1:PSM用ソフトウエアのダウンロード
$ export USER=email.address@oracle.com
$ export PASSWD=password
$ export IDENTITYDOMAIN=myidentitydomain
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
STEP2:PSM用ソフトウエアのインストール
[root@misc01 opc]# pip install -U psmcli.zip
Processing ./psmcli.zip
Requirement already up-to-date: requests<=2.8.1,>=2.7.0 in /usr/lib/python2.7/site-packages (from psmcli==1.1.8)
Requirement already up-to-date: keyring<=5.6,>=5.4 in /usr/lib/python2.7/site-packages (from psmcli==1.1.8)
Requirement already up-to-date: colorama==0.3.3 in /usr/lib/python2.7/site-packages (from psmcli==1.1.8)
Requirement already up-to-date: PyYAML==3.11 in /usr/lib64/python2.7/site-packages (from psmcli==1.1.8)
Installing collected packages: psmcli
Found existing installation: psmcli 1.1.8
Uninstalling psmcli-1.1.8:
Successfully uninstalled psmcli-1.1.8
Running setup.py install for psmcli ... done
Successfully installed psmcli-1.1.8
[root@misc01 opc]#
PSMインストール後の動作確認
[root@misc01 admin]# psm help
DESCRIPTION
A command line tool to interact with Oracle Cloud Platform Services (PaaS)
SYNOPSIS
psm <service> <command> [parameters]
AVAILABLE SERVICES
o BDCSCE
Oracle Big Data Cloud Service - Compute Edition
o CONTAINER
Oracle Container Cloud Service
o IDCS
Oracle Identity Cloud Service
o MySQLCS
Oracle MySQL Cloud Service
o OEHCS
Oracle Event Hub Cloud Service
o OEHPCS
Oracle Event Hub Cloud Service - Platform
o accs
Oracle Application Container Cloud Service
o caching
Oracle Caching Service
o dbcs
Oracle Database Cloud Service
o ggcs
Oracle GoldenGate Cloud Service
o jcs
Oracle Java Cloud Service
o stack
Oracle Cloud Stack Manager
o setup
Configure psm client options
o update
Update psm client to latest version
o log
View or update psm client log level
o help
Show help
AVAILABLE PARAMETERS
-v, --version
Show current version of psm client
[root@misc01 admin]#
自分のアイデンティティドメインが利用出来るように初期設定します。
設定が終わると、利用可能なサービスが表示されます。ここでは、MySQLを管理するのでMySQLCSを選択してコマンドを実行します。
[root@misc01 admin]# psm setup
Username: email.address@oracle.com
Password:
Retype Password:
Identity domain: myidentitydomain
Region [us]:
Output format [json]:
Please enter password for encrypted keyring:
----------------------------------------------------
'psm setup' was successful. Available services are:
o ANALYTICS : Oracle Analytics Cloud
o BDCSCE : Oracle Big Data Cloud Service - Compute Edition
o CONTAINER : Oracle Container Cloud Service
o IDCS : Oracle Identity Cloud Service
o IOTAssetMon : Oracle IoT Asset Monitoring 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 MySQLCS : Oracle MySQL Cloud Service
o OEHCS : Oracle Event Hub Cloud Service
o OEHPCS : Oracle Event Hub Cloud Service - Platform
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 jcs : Oracle Java Cloud Service
o stack : Oracle Cloud Stack Manager
----------------------------------------------------
[root@misc01 admin]#
補足:PSMが古い場合はアップグレードするようにプロンプトが出てきますので、必要に応じてアップデートして下さい。
[root@misc01 admin]# psm update
Please enter password for encrypted keyring:
...Downloading the latest psm client distribution - version 1.1.12
...Updating psm client from version 1.1.11 to 1.1.12
...If prompted for password, enter sudo password
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Processing /tmp/psmcli.zip
Requirement already up-to-date: requests<=2.8.1,>=2.7.0 in /usr/lib/python3.4/site-packages (from psmcli==1.1.12)
Requirement already up-to-date: keyring<=5.6,>=5.4 in /usr/lib/python3.4/site-packages (from psmcli==1.1.12)
Requirement already up-to-date: colorama==0.3.3 in /usr/lib/python3.4/site-packages (from psmcli==1.1.12)
Requirement already up-to-date: PyYAML==3.11 in /usr/lib64/python3.4/site-packages (from psmcli==1.1.12)
Installing collected packages: psmcli
Found existing installation: psmcli 1.1.11
Uninstalling psmcli-1.1.11:
Successfully uninstalled psmcli-1.1.11
Running setup.py install for psmcli: started
Running setup.py install for psmcli: finished with status 'done'
Successfully installed psmcli-1.1.12
...Cleaning up
[root@misc01 admin]#
MySQLCSオプションで利用可能なコマンドは以下の通りです。
サービスを拡張中なので、適宜追加されていきます。
[root@misc01 admin]# psm MySQLCS help
DESCRIPTION
Oracle MySQL Cloud Service
SYNOPSIS
psm MySQLCS <command> [parameters]
AVAILABLE COMMANDS
o services
List all Oracle MySQL Cloud Service instances
o service
List Oracle MySQL Cloud Service instance
o create-service
Create Oracle MySQL Cloud Service
o delete-service
Delete operation for MySQL.
o stop
Stop one or more VMs that are running Oracle MySQL Cloud Service instance
o start
Start one or more VMs that are running Oracle MySQL Cloud Service instance
o restart
Restart one or more VMs that are running Oracle MySQL Cloud Service instance
o scale
Scale-Up or scale-Down the Compute Shape used by service hosts
o add-storage
Add Capacity to storage volumes
o view-backups
List all backups of Oracle MySQL Cloud Service instance
o view-backup
List a backup of Oracle MySQL Cloud Service instance
o backup
Backup MySQL
o delete-backup
Delete an existing backup.
o view-restores
List all restore operations for Oracle MySQL Cloud Service instance
o view-restore
List a specified restore operation for Oracle MySQL Cloud Service instance
o restore
Restore MySQL from a backup.
o view-backup-config
List backup configuration of Oracle MySQL Cloud Service instance
o update-backup-config
Update the backup configuration for the MySQL service.
o available-patches
List all available patches for Oracle MySQL Cloud Service instance
o applied-patches
List all applied patches for Oracle MySQL Cloud Service instance
o patch
This operation will apply a patch to the service
o precheck-patch
This operation will run a precheck for a patch on the given service
o rollback
This operation will rollback a previously applied patch
o operation-status
View status of Oracle MySQL Cloud Service instance operation
o activities
View activities for Oracle MySQL Cloud Service instance
o access-rules
List access rules for Oracle MySQL Cloud Service instance
o multisite-access-rules
List access rules for multi-site service Oracle MySQL Cloud Service instance
o create-access-rule
Create an access rule for Oracle MySQL Cloud Service instance
o create-multisite-access-rule
Create an access rule for multisite Oracle MySQL Cloud Service instance
o delete-access-rule
Delete an access rule for Oracle MySQL Cloud Service instance
o delete-multisite-access-rule
Delete an access rule for multi-site Oracle MySQL Cloud Service instance
o enable-access-rule
Enable an access rule for Oracle MySQL Cloud Service instance
o enable-multisite-access-rule
Enable an access rule for multi-site Oracle MySQL Cloud Service instance
o disable-access-rule
Disable an access rule for Oracle MySQL Cloud Service instance
o disable-multisite-access-rule
Disable an access rule for multi-site Oracle MySQL Cloud Service instance
o help
Show help
[root@misc01 admin]#
MySQLインスタンスの作成
既存のインスタンスが存在していないので、MySQLCSオプションでインスタンスを作成してみます。
先ずは、MySQLCS create-serviceのオプションを確認してみます。
[root@misc01 admin]# psm MySQLCS services
Please enter password for encrypted keyring:
{
"services":{}
}
[root@misc01 admin]# psm MySQLCS create-service help
DESCRIPTION
Create Oracle MySQL Cloud Service
SYNOPSIS
psm MySQLCS create-service [parameters]
-c, --config-payload <value>
[-of, --output-format <value>]
AVAILABLE PARAMETERS
-c, --config-payload (file)
Path to JSON file containing payload for this command. A sample payload is
included in EXAMPLES below.
-of, --output-format (string)
Desired output format. Valid values are [json, html]
EXAMPLES
psm MySQLCS create-service -c /home/templates/create-service-payload.json
SAMPLE PAYLOAD
Required properties are indicated as "required". Replace in the actual payload with real values.
{
"serviceName":"required",
"serviceDescription":"",
"backupDestination":"",
"cloudStorageContainer":"",
"cloudStorageUser":"",
"cloudStoragePassword":"",
"cloudStorageContainerAutoGenerate":"",
"vmPublicKeyText":"required",
"serviceLevel":"required",
"meteringFrequency":"",
"serviceVersion":"required",
"edition":"required",
"vmUser":"required",
"region":"",
"availabilityDomain":"",
"noRollback":"",
"isManaged":"",
"ipNetwork":"",
"components":{
"mysql":{
"shape":"required",
"mysqlUserName":"required",
"mysqlUserPassword":"required",
"mysqlPort":"required",
"mysqlEMPort":"",
"dbStorage":"required",
"dbName":"required",
"mysqlCharset":"",
"mysqlCollation":"",
"enterpriseMonitor":"",
"enterpriseMonitorManagerUser":"",
"enterpriseMonitorManagerPassword":"",
"enterpriseMonitorAgentUser":"",
"enterpriseMonitorAgentPassword":""
}
}
}
[root@misc01 admin]#
上記のように、事前にサーバー構成を定義した、JSONフォーマットの定義ファイルの作成が必用ですので、以下のマニュアルを見て、定義ファイルを作成して下さい。
https://docs.oracle.com/cd/E60665_01/jcs_gs/PSCLI/GUID-C7254B5C-67E5-4321-A7ED-A6376FBC7956.htm
https://docs.oracle.com/en/cloud/paas/java-cloud/pscli/mysqlcs-create-service.html
JSONファイルの作成が終わったら、ファイルを指定してインスタンスを作成してみます。
[root@misc01 opc]# cat create-service-payload.json
{
"serviceName":"PSM01",
"serviceDescription":"Create instance from PSM",
"backupDestination":"NONE",
"vmPublicKeyText":"ssh-rsa CBBB3NzaC2yc2EBBABBJQAAAQEAlL6Ud4xUYxHcKUUijX.......",
"serviceLevel":"PAAS",
"serviceVersion":"5.7",
"vmUser":"opc",
"components":{
"mysql":{
"shape":"oc3",
"mysqlUserName":"root",
"mysqlUserPassword":"MyPass-2017",
"mysqlPort":"3306",
"mysqlEMPort":"18443",
"dbStorage":"25",
"dbName":"PSM",
"mysqlCharset":"utf8mb4",
"enterpriseMonitor":"Yes",
"enterpriseMonitorManagerUser":"mem_manager",
"enterpriseMonitorManagerPassword":"password",
"enterpriseMonitorAgentUser":"mem_user",
"enterpriseMonitorAgentPassword":"password"
}
}
}
[root@misc01 opc]# psm MySQLCS create-service -c create-service-payload.json
Please enter password for encrypted keyring:
{
"details":{
"message":"Submitted job to create service [PSM01] in domain [myidentitydomain].",
"jobId":"10382276"
}
}
Job ID : 10382276
[root@misc01 opc]#

インスタンスの作成が完了したら、SSHのみ初期設定ではアクセス可能ですので、
SSHでプライベート鍵を利用してアクセスしてみて下さい。
MySQLには、JSONで定義したrootパスワードが設定されているので、指定したパスワードを利用してアクセス確認して下さい。

[oracle@psm01-mysql-1 opc]$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 968
Server version: 5.7.17-enterprise-commercial-advanced-log MySQL Enterprise Server - Advanced Edition (Commercial)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> select user,host,authentication_string from mysql.user where user = 'root';
+------+------+-------------------------------------------+
| user | host | authentication_string |
+------+------+-------------------------------------------+
| root | % | *C6918734E7352333C2B35180C978E969B5CA1972 |
+------+------+-------------------------------------------+
1 row in set (0.00 sec)
mysql>
MySQLインスタンスの削除
PSMコマンドでインスタンスの状況を確認して、インスタンスが不要になったら以下の様にdelete-serviceオプションでインスタンスを削除して下さい。
[root@misc01 opc]# psm MySQLCS services | grep -A10 serviceId
Please enter password for encrypted keyring:
"serviceId":303252,
"serviceName":"PSM01",
"serviceType":"MySQLCS",
"domainName":"myidentitydomain",
"serviceVersion":"5.7",
"releaseVersion":"5.7.17",
"metaVersion":"17.1.5-170205",
"serviceDescription":"Create instance from PSM",
"serviceLevel":"PAAS",
"subscription":"HOURLY",
"meteringFrequency":"HOURLY",
[root@misc01 opc]# psm MySQLCS delete-service -s PSM01
Please enter password for encrypted keyring:
{
"details":{
"message":"Submitted job to delete service [PSM01] in domain [myidentitydomain].",
"jobId":"10390616"
}
}
Job ID : 10390616
[root@misc01 opc]#
[root@misc01 opc]# psm MySQLCS services
Please enter password for encrypted keyring:
{
"services":{}
}
[root@misc01 opc]#