Hey Siri! Autonomous Databaseを起動して!
■■■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を操作する場合の一連の手順)。
ちなみに、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アドレスを割当て」しておく。(下の図はインスタンス作成時にラジオボタンで指定している)
やったこと
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の一部だけ表示)
#!/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コマンドとかで試すのがよいかと)
- 「認証」に「SSHキー」を選択
- 「SSHキー」をクリックすると、SSHキーの作成画面になる
- RSAの場合は 最低2048ビットを推奨、とマニュアルに記載があったのでそれを指定して作成した "A minimum of 2048 bits is recommended for SSH-2 RSA."
「キーを生成」をクリックし、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のショートカットを初めて触ったので、これがベストかどうかは全く分かりませんが...。
ショートカットに付けた名前「Autonomous Database」が、Siriで起動するときの言葉になる。
最後に、アイコンを優しい赤色の車に変更する。(Autonomous Databaseといえば、いつも赤い車の絵で表現されるので、それっぽいアイコンを選びたい)
実行 (Hey Siri!)
「Hey Siri! Autonomous Database!」 と呼びかけると、
startをクリックし、起動が完了すると、
実行 (ショートカットのアイコンをクリック)
アイコンクリックし、「Status」を選んだときの様子。
最後に
本資料の内容は、動作確認を目的に、エラーハンドリング等もない簡単なサンプルコードとなります。
参考
-
Oracle Cloud Infrastructure CLI Command Reference
-
Adding Users on an Instance - Creating Additional SSH-Enabled Users on Linux Instances
-
Managing Key Pairs on Linux Instances
-
JMESPath指定
Oracle Cloud Infrastructure CLI Command Reference
Adding Users on an Instance - Creating Additional SSH-Enabled Users on Linux Instances
Managing Key Pairs on Linux Instances
JMESPath指定
Author And Source
この問題について(Hey Siri! Autonomous Databaseを起動して!), 我々は、より多くの情報をここで見つけました https://qiita.com/mikika/items/5ee86cc78095351dcad2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .