Oracle Analytics Cloud 起動停止の自動化 ~PaaS Service Manager CLI によるスケジューリング編~

技術者が語るOracle Cloud

はじめに

皆様、こんにちは。データソリューション部の山本です。

Oracle Analytics Cloud(以下、OAC)のに対するインスタンスの起動停止スケジューリングをテーマとした記事となります。

2019年10月現在ですが、Cloudのインターフェースで起動や停止するスケジューリング機能がないです。ユニバーサルクレジットでは、使用した時間分課金されるので、お客様へ提供するにあたりコスト面を考慮してPaaS Service Manager(以下、PSM)CLIツールによるインスタンスの起動・停止を検討しました。(→ADW Cloud のインスタンスの起動・停止はこちら

本記事では、Oracle社のマニュアルやサポート、コミュニティサイトなどのWeb情報、私自身の経験などを元に検証しました。クラウド全般的に言える内容ではありますが、クラウド環境は日々改善や機器増強され、性能面の強化などが頻繁に発生しています。その為、本記事の検証結果は同様に実施した検証と異なる可能性がございますが、ご容赦の程宜しくお願いします。

本件は過去に対応した案件を2019年10月に再確認した内容です。

前提内容

  • 本記事を作成するにあたり、Oracle Cloudの表示言語は日本語で設定しています。
  • OACのインスタンスは「us-ashburn-1」に作成した状態となります。
  • 社内のLinux環境(仮想)にCLIツールを導入してOracle Cloudにアクセスしています。
  • Linuxの環境はrootユーザで設定しています。
  • 使用したネットワークにプロキシ環境があります。

検証環境概要

oraclecloud03_01.png

環境区分環境情報補足内容
実行サーバ Red Hat Enterprize Linux 7.6 最小構成でインストール
psm 1.1.28 2019年10月時点の導入バージョン
python 3.6.9 PSM CLIの前提バージョンを考慮

インスタンス起動停止のスケジューリング化

インスタンスの起動・停止をスケジューリング化する為には、以下のステップで環境を準備する必要があります。

  • ステップ1:PSM CLI ツールのインストール事前準備
  • ステップ2:PSM CLI ツールのインストール
  • ステップ3:PSM CLI ツールのセットアップ
  • ステップ4:PSM CLI ツールによるスケジューリング

ステップ1:PSM CLI ツールのインストール事前準備

PSM CLIはPython 3.3以上がツールの要件となり、pythonのサイトからソース等をダウンロードしてコンパイルする必要があります。本記事では、ソースファイルをコンパイルする手順で環境を準備しています。

1. ソースのコンパイル環境の準備

ソースファイルをコンパイルする環境として、Linux環境に以下のモジュールをインストールします。本手順では、DVDに同梱しているモジュールをyumのリポジトリとしてインストールしています。

モジュール名備考
make 「openssl-devel」を導入していない環境では、PythonからPIPツールが実行できない場合がある。
参考:Oracle公式サイト
gcc
zlib-devel
bzip2-devel
openssl-devel
ncurses-devel
sqlite-devel
readline-devel
tk-devel
wget 最小構成ではインストールされない為、追加でインストール

【サンプルコマンド】
# yum -y install <モジュール名>

2. pythonモジュールのダウンロード

wgetでプロキシが使用できるように設定して、pythonのサイトよりモジュールをダウンロードする。

【サンプル設定】
# vi ~/.wgetrc

追加する設定内容
 http_proxy=http://xx.xx.xx.xx:yyyy
 https_proxy=http://xx.xx.xx.xx:yyyy
 ftp_proxy=http://xx.xx.xx.xx:yyyy
  xx.xx.xx.xx → プロキシのIPアドレス
  yyyy        → プロキシのポート番号
【サンプルコマンド】
# wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz

※Python 3.7系と3.8系でPSMを導入するとエラーになったので、3.6系の最新バージョンをインストールしました。

3. pythonモジュールのインストール

pythonのインストールパスを指定し、以下のサンプルコマンドを元にソースをコンパイルおよびインストールする。

【サンプルコマンド】
# tar -zxvf Python-3.6.9.tgz

# cd Python-3.6.9

# ./configure --prefix=/u01/app/python

# make

# make install

※Linuxのスペックが影響しますが、検証した環境では上記が完了するまで10分ぐらい掛かりました。

4. python環境の初期設定

デフォルトで定義されているpython関連のシンボリックリンクを更新して、インストールしたモジュールのバージョンを確認する。

【サンプルコマンド】
# ln -nfs /u01/app/python/bin/python3 /usr/bin/python
# ln -nfs /u01/app/python/bin/pip3 /usr/bin/pip

# python --version
Python 3.6.9
#

5. yumで使用するpythonの設定

yumが使用されているpythonのバージョンは2系となり、3系のpythonを使用するとエラーになります。その為、yumで使用するバージョンを以下のサンプル設定を元に2系に変更する。

【サンプル設定】
# vi /usr/bin/yum

変更する内容はファイルの先頭行を以下の内容に変更
 修正前)#!/usr/bin/python
 修正後)#!/usr/bin/python2
  マジックナンバーを「python2」に変更

ステップ2:PSM CLI ツールのインストール

PSM CLIのモジュールをダウンロードする方法としては、Oracle Cloudのサイトからダウンロードする方法とREST APIを利用した方法があります。本ステップでは、Oracle Cloudのサイトからダウンロードする方法を紹介します。REST APIを利用したダウンロードは、本ステップの【参考】で紹介します。

1. Oracle Cloudサイトからモジュールのダウンロード

Oracle Cloudのハンバーガーメニューをクリックして、「プラットフォーム・サービス」→「Analytics」のメニューを展開する。

oraclecloud03_02.png

Analytics Cloudのサイト右上でユーザのマークをクリックし、「ヘルプ」 → 「Download」のメニューを展開する。

oraclecloud03_03.png

Download Centerのポップアップ画面で、ダウンロードマークをクリックし、ファイルをダウンロードする画面がダウンロードを開始する。

oraclecloud03_04.png

ダウンロード後、「閉じる」でポップアップ画面を閉じ、「psmcli.zip」を設定するサーバにアップロードする。

【参考】モジュールのダウンロード(REST API編)

rootユーザ(実行するユーザ)のホームディレクトリに以下の内容を参考に設定を追加する。

【サンプル設定】
# vi ~/.curlrc

追加する設定内容
 proxy = "http://xx.xx.xx.xx:yyyy"
  xx.xx.xx.xx → プロキシのIPアドレス
  yyyy        → プロキシのポート番号

ダウンロードする際に必要な以下の情報を確認して、サンプルコマンドを参考にcurlでファイルをダウンロードする。

設定項目項目の説明設定値
AREA 通信先となる REST API サーバ us
IDENTITYDOMAIN アイデンティティドメイン名 idcs-xxxxxxxxxx
USER ログインするユーザ名 xxxxx@system-exe.co.jp
PASSWD ログインするユーザのパスワード xxxxxxxxx
【サンプルコマンド】
# export AREA=us
# export IDENTITYDOMAIN=idcs-xxxxxxxxxx
# export USER=xxxxx@system-exe.co.jp
# export PASSWD=xxxxxxxxx

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

2. モジュールのインストール

rootユーザ(実行するユーザ)のコマンドラインでプロキシの設定をしてpythonのpipツールでpsmをインストールする。

【サンプルコマンド】
# export HTTP_PROXY=http://xx.xx.xx.xx:yyyy
# export HTTPS_PROXY=http://xx.xx.xx.xx:yyyy

 http://xx.xx.xx.xx:yyyy
  xx.xx.xx.xx → プロキシのIPアドレス
  yyyy        → プロキシのポート番号

# pip install -U psmcli.zip

3. シンボリックリンクの作成

psmはインストールしたpython配下のディレクトリに配置される為、シンボリックリンクを作成して、使い易いように設定する。

【サンプルコマンド】
# mkdir -p /u01/app/psm
# ln -s /u01/app/python/bin /u01/app/psm/bin

4. バージョンの確認

以下のコマンドでインストールしたpsm cliツールのバージョンを確認する。

【サンプルコマンド】
# /u01/app/psm/bin/psm --version
Oracle PaaS CLI client 
Version 1.1.28
#

ステップ3:PSM CLI ツールのセットアップ

PSM CLIを使用するためには、以下の手順でセットアップする。

1. 利用環境の設定

利用する環境の情報を確認して、サンプルコマンドを参考にセットアップする。

設定項目項目の説明設定値
Username ツールを実行ユーザ名 xxxxx@system-exe.co.jp
Password ツールを実行ユーザのパスワード xxxxxxxxx
Retype Password ツールを実行ユーザのパスワード(再) xxxxxxxxx
Identity domain アイデンティティドメイン名 idcs-xxxxxxxxxx
Region 使用するリーション名 us
Output format 出力タイプの選択 short
Use Oauth? Oauth経由でPSM REST APIと通信 n
【サンプルコマンド】
# /u01/app/psm/bin/psm setup
Username: xxxxx@system-exe.co.jp
Password: 
Retype Password: 
Identity domain: idcs-xxxxxxxxxx
Region [us]: us
Output format [short]: short
Use OAuth? [n]: n

ステップ4:PSM CLI ツールによるスケジューリング

起動・停止処理をスクリプト化して、cronなど登録してスケジューリング化する。

1. OAC 起動停止スクリプトの準備

起動停止のスクリプトを準備するにあたり、以下の点を考慮しました。

・インスタンス指定で起動や停止などの処理ができること
・起動または停止時に処理で待機または一定時間経過で終了を選択できること
・プロキシがある場合でも実行できること

→サンプルスクリプトのダウンロード

※サンプルスクリプトの動作は確認していますが、実行環境の違いなどにより正常に動作しないことが考えられる為、利用する際は自己責任でお願いします。

2. cronにスクリプトを登録

「1」で作成したスクリプトをcronに登録する。

サンプル設定では、以下の内容で実行されます。
・インスタンスは毎日9時に起動(起動が完了するまで待機)
・インスタンスは毎日21時に停止(コマンド実行後、指定時間チェック)

【サンプル設定】
# crontab -e

0 9 * * * bash /unyo/script/oac_ctl.bash xxx start wait
0 21 * * * bash /unyo/script/oac_ctl.bash xxx stop check

xxx : OACのインスタンス名

最後に

最後になりますが、弊社は「データベースのオールマイティ企業」を謳っており、データベースに関する経験や知識、技術力を自負しています。

データベース関連での課題解決等、必ずやお客様のお役に立てると信じていますので、何かございましたら弊社へご連絡下さい。

それでは、次回をお楽しみに!

同じテーマの記事一覧