LoginSignup
10
1

More than 3 years have passed since last update.

Hey Siri! Autonomous Databaseを起動して!

Last updated at Posted at 2019-11-12

■■■Oracle Cloudのウェビナーシリーズは→こちら■■■

こちらで紹介されていた内容をやってみました。
https://blogs.oracle.com/developers/hey-siri-create-my-oracle-autonomous-database

上のBLOGではAutonomous Databaseを作成していますが、ここではAutonomous Databaseの起動/停止/ステータス確認をしています。

iOS 12以降で実装されている、iPhoneの「ショートカット」機能を使っていますが、それ以外の部分は、Oracle Cloudを利用する際の一般的な手順となります(コマンドベースでの管理ツールであるoci cliからAutonomous Databaseを操作する場合の一連の手順)。

image.png

ちなみに、OCI Manager という便利なiPhoneアプリ(公式ではありませんが)を使っても、
Autonomous Databaseの起動停止は簡単に行えます。
OCIのインスタンスをiOSから操作できるOCI Managerを使ってみる
(あれっ?OCI Managerをショートカットに登録すれば良かったのでは...という気がしますが、一旦忘れます)

環境

①iPhone --(SSH公開鍵認証)--> ②OCI上のCompute --(oci cliで操作)--> ③Autonomous Database

  • ②のOS:Oracle Linux 7
  • ②のOSユーザ名:app (事前に作成済み)

注:②Computeインスタンスには「パブリックIPアドレスを割当て」しておく。(下の図はインスタンス作成時にラジオボタンで指定している)

image.png

やったこと

oci cli を実行できるようセットアップする

①iPhone --(SSH公開鍵認証)--> ②OCI上のCompute --(oci cliで操作)--> ③Autonomous Database

②OCI上のComputeインスタンスに、appユーザでログインし

Oracle Cloud Infrastructure の Python SDKを使ってObject Storageにファイルをアップロード
「準備」の「公開鍵の登録」までを実行する。(途中、バケットの作成と、pipenv install oci は実施不要)

※冒頭のBLOGのように、Oracle Cloud Developer Imageを使用したComputeインスタンスを作成した場合は、Python環境を整えるところはSKIP可能。(その場合は使用したPython仮想環境に応じて後続の手順を、適宜読み替えて下さい)

Autonomous Databaseを起動停止するスクリプトを作成する

①iPhone --(SSH公開鍵認証)--> ②OCI上のCompute --(oci cliで操作)--> ③Autonomous Database

以前、(Autonomousではない)データベースを起動停止するベタ書きスクリプト(mydb.sh)を作成したときの内容を参考に、/home/app/mypj/util/mydb.sh として準備。--wait-for-state の説明などは前回分(リンク先)参照。

今回のmydb.sh では、

  • 変数ADBに、Autonomous Databaseのocidを指定
  • 今回のPython仮想環境が pyenv + pipenv なので、oci db .. の それぞれ冒頭で pipenv run
  • --query 'data."lifecycle-state"' 指定は、JMESPathでの指定(oci db .. 実行結果のjsonの一部だけ表示)
mydb.sh
#!/bin/sh

# Autonomous Databaseの ocidを指定する
ADB="ocid1.autonomousdatabase.oc1.xxx.xxxxxxxxxxxxxxxxxxx"

cd /home/app/mypj

if [ "$1" = "" ]
then
    echo "Usage: "
    echo $0 "stop"
    echo $0 "start"
    echo $0 "get"
    exit 1
fi

case $1 in
        "stop" ) pipenv run oci db autonomous-database stop --autonomous-database-id ${ADB} --wait-for-state STOPPED --query 'data."lifecycle-state"' ;;
        "start" ) pipenv run oci db autonomous-database start --autonomous-database-id ${ADB} --wait-for-state AVAILABLE --query 'data."lifecycle-state"' ;;
        "get" | "status" ) pipenv run oci db autonomous-database get --autonomous-database-id ${ADB} --query 'data."lifecycle-state"' ;;
esac

(ついstatusと打ちたくなるので、case 内ではgetとstatusと両方受け付けるようにしている)

以下を実行し、Autonomous Databaseの起動/停止/ステータス確認する。

$ ./mydb.sh start
$ ./mydb.sh stop
$ ./mydb.sh status

それぞれ、「"AVAILABLE"」「"STOPPED"」「"<ステータスに応じた値>"」が返る。

iPhoneから「SSH経由でスクリプトを実行」するショートカットを作成する

①iPhone --(SSH公開鍵認証)--> ②OCI上のCompute --(oci cliで操作)--> ③Autonomous Database

ショートカットの作成は、

  • iPhoneで「ショートカット」を起動(「ショートカット」アプリがない場合はインストール)
  • 「ショートカットを作成」
  • 「スクリプティング」 → 「SSH経由でスクリプトを実行」を選択

こんな感じ↓↓で ②OCI上のComputeのPublic IPアドレスやユーザ名など、ログイン情報や、実行するスクリプトを入力。(下図では、いきなりOperation変数を定義して /home/.../mydb.sh を指定しているが、まずは引数無しでdateコマンドとかで試すのがよいかと)

image.png

  • 「認証」に「SSHキー」を選択
  • 「SSHキー」をクリックすると、SSHキーの作成画面になる
  • RSAの場合は 最低2048ビットを推奨、とマニュアルに記載があったのでそれを指定して作成した "A minimum of 2048 bits is recommended for SSH-2 RSA."

image.png

「キーを生成」をクリックし、SSHキーのペアを作成する。
「公開鍵を共有」をクリックし、公開鍵を何らかの形で吸い上げる。

SSH公開鍵認証でログインできるよう設定する

①iPhone --(SSH公開鍵認証)--> ②OCI上のCompute --(oci cliで操作)--> ③Autonomous Database

先の手順「公開鍵を共有」で得られたファイルを appユーザの $HOME/.ssh/authorized_keysに貼り付け。

マニュアルに少し手順があるが、追加で、ファイルのパーミッションについても設定が必要。
Adding Users on an Instance - Creating Additional SSH-Enabled Users on Linux Instances

今回はapp ユーザで、以下の内容を実施した。

$ mkdir ~/.ssh

### authorized_keysファイルに 公開鍵の内容を記入する
$ echo "ssh-rsa AAA*************************9XB iPhone XX" >>  ~/.ssh/authorized_keys

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

### (.sshディレクトリ, authorized_keysファイルのパーミッションは以下の状態)
$ ls -la ~/.ssh
total 8
drwx------.  2 app app   29 Nov  7 13:00 .
drwx------. 13 app app 4096 Nov  7 14:36 ..
-rw-------.  1 app app  391 Nov  7 13:00 authorized_keys

iPhoneからショートカットを実行してみる

ここまできたら iPhoneからのSSH公開鍵認証→スクリプト実行ができるので、再生ボタン▶をクリックして試しに実行してみる。

start/stop/statusを変数にしたり、アイコンを整える

最終的にこんな感じに。赤枠内が既に作成済みのところ、その前後に、Operationという名前の変数にリストから選んだ値を代入したり、最後に結果表示を入れたり。iPhoneのショートカットを初めて触ったので、これがベストかどうかは全く分かりませんが...。

image.png

ショートカットに付けた名前「Autonomous Database」が、Siriで起動するときの言葉になる。

最後に、アイコンを優しい赤色の車に変更する。(Autonomous Databaseといえば、いつも赤い車の絵で表現されるので、それっぽいアイコンを選びたい)

実行 (Hey Siri!)

「Hey Siri! Autonomous Database!」 と呼びかけると、

image.png

startをクリックし、起動が完了すると、

image.png

実行 (ショートカットのアイコンをクリック)

アイコンクリックし、「Status」を選んだときの様子。

image.png

IMG_1802.PNG

IMG_1803.PNG

最後に

本資料の内容は、動作確認を目的に、エラーハンドリング等もない簡単なサンプルコードとなります。

参考

10
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
1