大塚紳一郎, 2020年5月
2003年、株式会社野村総合研究所に新卒で入社。ミッションクリティカルシステムにおけるOracle Databaseの構築、運用、コンサルティングに関して15年以上の経験を持つ。毎年サンフランシスコで開催される世界最大のテクノロジーイベント「Oracle OpenWorld」を含む各種イベントでの講演多数。Autonomous DatabaseがGAされた年にOracle ACE Associateになれたことに運命を感じており、Oracleデータベース管理者の今後のロールモデルの構築に携わりたいと考え日々活動中。最新の登壇タイトルは「Boosting your career through Oracle Cloud Infrastructure 2018 Certified Architect Associate.」
こんにちは、NRIの大塚です。今回はCURRENT DATA領域からBIG DATA領域に向かう途中のTea Breakです。Oracle Blockchain Platform Cloud Service、Multi-Factor AuthenticationそしてOracle Container Engine for Kubernetesと、立て続けにヘビーな実装が続きましたので、今回はすこしカジュアルに進めて行きたいと思います。テーマはOracle Container Engine for Kubernetesの時にK8sコントロールサーバに実装したOracle Cloud Infrastructure Command Line Interface (以降OCI CLI)の活用です。
OCI CLIはその名のとおりコマンド・ラインでOracle Cloud Infrastructureのオブジェクトおよびサービスを操作できるツールです。一方の私達の状況ですが、OCIへの実装が進み、管理しているインスタンスの数も増えてきました。クラウドの最大の魅力はPay as you go ! つまり使った分だけの時間課金です。皆さま作業が終わったあとはインスタンスの停止をしているかと思います。今回はOCI CLIを活用して、複数のインスタンスを一括して停止する運用スクリプトを作成し、そのスクリプトをCRONに組み込むことで、毎日決まった時間(例えば帰宅前くらいの時間)に複数インスタンスを停止させて課金を一時停止する運用を実現してみたいと思います。
実現する運用のイメージ図は以下です。CURRENT DATA編で実装したBlockchainコンパートメントを再活用しています(この回から閲覧した方は、CURRENT DATA編をご参照ください)
今回は以下の4ステップで実装していきます。
それでは、さっそくはじめたいと思います。
テナント管理者ユーザーとしてログインしてください(OKE-adminではありません。注意してください)
さっそくOracle Cloud管理コンソールへログインしてみましょう。URLは以下です。
https://www.oracle.com/jp/cloud/sign-in.html
(注)2ステップ検証は以下の記事で実装しました。
「Keys to the Oracle Cloud第7回:【Tea break】 Oracle CloudにおけるMulti-Factor Authentication(多要素認証)の実装」
標準のログインシーケンスでは、2ステップ検証の画面には遷移しませんのでご注意ください。
上記の記事を参考に各自実装をお願いします。
これからOracle Cloud管理コンソールを活用して実装をしていきます。ハンバーガーボタンを押下するとメニューが表示されます。表示されたメニューで構築を進めて行きます。
構築開始前にリージョンと、言語の確認をしましょう。必要に応じて、下図を参考に設定を変更してください。
それでは準備が出来ましたので、「稼働停止実験対象サーバ」を作成しましょう。
「コンピュート」→「インスタンス」の順に押下してください。
コンパ―トメントが「Blockchain」になっていない場合、「Blockchain」を選択してください。
その後、インスタンスの作成を押下してください。まず1台目から作成します。
1台目の稼働停止実験対象サーバの設定値を入力していきます。
作成が開始されます。
すぐに作成されました。
「インスタンス」を押下して、インスタンス一覧画面に戻ります。
先ほど作成したインスタンスが一覧に入っています。
「Blockchain」コンパートメントであることを確認の上、「インスタンスの作成」を押下して、
2台目の稼働停止実験対象サーバを作成します。
2台目の稼働停止実験対象サーバの設定値を入力していきます。
作成が開始されます。
すぐに作成されました。
「インスタンス」を押下して、インスタンス一覧画面に戻ります。
先ほど作成したインスタンスが一覧に入っています。
「プロキシサーバ」と「K8sコントロールサーバ」を起動して、OCI CLIを活用した運用スクリプトの開発に入っていきます。
「プロキシサーバ」と「K8sコントロールサーバ」インスタンスの起動は「開始」を押下することで実現できます。
それではOCL CLIがセットアップされているK8sコントロールサーバに接続したいと思います。接続の概要を説明します。
システム構成図で表すと下図のようになります。
実際のコマンドで接続してみたいと思います。
[opc@プロキシサーバのhostname 鍵ファイル置き場]$ ssh -i myrsa opc@ K8sコントロールサーバのPrivateIPアドレス
[opc@K8sコントロールサーバのhostname ~]$
それではOCI CLIを活用した運用スクリプトを開発します。その運用スクリプトにはコンパートメントIDが必要になります。以下のように取得して、メモ帳などにコピーして控えておいてください。
Blockchainコンパートメントのocidにマウスカーソルを合わせると開く詳細ダイアログに表示される詳細なocidをコピーして、メモ帳などに貼り付けて値を控えます。
Blockchainコンパートメントのocidを控えることが出来たら、以下の流れで開発します。
運用スクリプトの中身は以下です。以下の構文を貼り付け、作成してください。
上記のスクリプトの活用の仕方について、すこし説明します。
有効範囲は「コンパートメント」です。皆さま自身の環境に拡張する際は、ご注意ください。
コンパートメントごとに運用スクリプトを分けても良いですし、ひとつの運用スクリプトの中にコンパートメント単位で上記構文を繰り返し入力しても良いです。
稼働を停止したいVMは、増やすことができます。半角スペース区切りで羅列してください。長くなった場合に改行は入れないように注意してください。For文を用いて、すこしだけオシャレにしてあります。
以下に実行記録を記載します。
それでは、運用に乗せる前に稼働確認をしてみましょう。
稼働確認は、実際のOracle Cloud管理コンソール上でのインスタンスの状態確認をしながら行いたいと思います。
以下の状況からOCI CLIを活用した運用スクリプトの稼働確認をおこないます。
以下のコマンドを実行します。
[opc@K8sコントロールサーバのhostname ~]$ ./shutdown.sh
すると、稼働停止実験対象サーバの状態が「停止中・・・」に遷移します。
さらにしばらくすると稼働停止実験対象サーバの状態が「停止済」に遷移します。成功しました。
さて、それではさきほど作成した運用スクリプトを運用に乗せたいと思います。
ですがCRONに組み込む前に運用スクリプトに手を加えないと行けません。
opcユーザーにおけるCRON実行時の動作環境は以下です。
XDG_SESSION_ID=6
SHELL=/bin/sh
USER=opc
PATH=/usr/bin:/bin
PWD=/home/opc
LANG=en_US.UTF-8
SHLVL=1
HOME=/home/opc
LOGNAME=opc
XDG_RUNTIME_DIR=/run/user/1000
_=
※上記の値はCRONに以下を登録して値を取得しています。
* * * * * env > /home/opc/env.log
お気づきになりましたか?そうです。つまり、OCI CLIへのPATHが通っていないのです。
OCI CLIを配置したPATHは第11回:【CURRENT DATA編】PaaSレイヤの実装②(K8sコントロールサーバ)を思い出してください。PATHが通るように運用スクリプトを以下のように修正します。
(冒頭にPATHを設定しています。)
運用スクリプトの修正が完了したら、CRONに登録したいと思います。
以下の流れで設定します。
00 21 * * * /home/opc/shutdown.sh
意味は左から、[分] [時] [日] [月] [曜日] [コマンド]です。
[分]:0~59の数字で設定
[時]:0~23の数字で設定
[日]:1~31の数字で設定
[月]:1~12の数字で設定
[曜日]:0が日曜日、1が月曜日、2が火曜日、3が水曜日、4が木曜日、5が金曜日、6が土曜日、7が日曜日
[コマンド]:パスに注意して登録
それでは、先ほど停止した稼働停止実験対象サーバのインスタンスを下図のように起動して、CRONで設定した時間が来るのを待ちたいと思います(待ちきれない方は、CRONに設定する時刻を、dateコマンドで表示される現在時刻の5分後等に設定してください。)
CRONで設定した時刻になると、以下のように稼働停止実験対象サーバのインスタンスの状態が「停止済」になりました。
以上がOracle Cloud Infrastructure Command Line Interface (OCI CLI)の活用例になります。
OCI CLIは多くのことに活用できます。ぜひ便利な運用の実現など、皆さまも活用方法を考えてみてください。
2回目のTea Breakはここまでとしたいと思います。読んで頂きありがとうございました。
※コマンド・ライン・インタフェース (CLI)に関するマニュアル:
https://docs.oracle.com/cd/E97706_01/Content/API/Concepts/cliconcepts.htm