Keys to the Oracle Cloud
第14回:【Tea break】
Oracle Cloud Infrastructure Command Line Interfaceの活用

大塚紳一郎, 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認定ITアーキテクト
  • Oracle ACE Associate
  • Oracle MASTER Platinum10g,11g,12c(Platinum of the year 2016 in Japan)
  • Oracle MASTER Cloud Oracle Database Cloud Service
  • Oracle MASTER Cloud Oracle Java Cloud Service
  • Oracle Cloud Infrastructure 2018 Certified Architect Associate
  • Oracle Database Cloud Service 2019 Operations Certified Associate
  • Oracle Autonomous Database Cloud 2019 Certified Specialist
著者紹介
著者紹介
  • これからの内容はOracle Cloud Infrastructure (以下OCI)のサービスを前提としたものです。
  • 検証時点(2019年3月末)のOCIのサービス内容に基づいて記載しているため、内容が一部異なる場合があります。
  • 最新の情報については公式Webサイト(https://www.oracle.com/jp/index.html)をご確認頂きたく思います。
  • 本連載は私個人の理解に基づいており、事実と異なる可能性があることをご了承いただきたく思います。

こんにちは、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ステップで実装していきます。

  • Step1:Oracle Cloud管理コンソールへのログイン
  • Step2:稼働停止実験対象サーバのインスタンス作成
  • Step3:OCI CLIを活用した運用スクリプト開発
  • Step4:運用への組み込み(CRONを利用)

それでは、さっそくはじめたいと思います。

 

1.Oracle Cloud管理コンソールへのログイン

テナント管理者ユーザーとしてログインしてください(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管理コンソールを活用して実装をしていきます。ハンバーガーボタンを押下するとメニューが表示されます。表示されたメニューで構築を進めて行きます。
構築開始前にリージョンと、言語の確認をしましょう。必要に応じて、下図を参考に設定を変更してください。

 

 

2.「稼働停止実験対象サーバ」インスタンスの作成

それでは準備が出来ましたので、「稼働停止実験対象サーバ」を作成しましょう。
「コンピュート」→「インスタンス」の順に押下してください。

 

 

コンパ―トメントが「Blockchain」になっていない場合、「Blockchain」を選択してください。
その後、インスタンスの作成を押下してください。まず1台目から作成します。

 

 

1台目の稼働停止実験対象サーバの設定値を入力していきます。

 

 

作成が開始されます。

 

 

すぐに作成されました。
「インスタンス」を押下して、インスタンス一覧画面に戻ります。

 

 

先ほど作成したインスタンスが一覧に入っています。

 

 

「Blockchain」コンパートメントであることを確認の上、「インスタンスの作成」を押下して、
2台目の稼働停止実験対象サーバを作成します。

 

 

2台目の稼働停止実験対象サーバの設定値を入力していきます。

 

 

作成が開始されます。

 

 

すぐに作成されました。
「インスタンス」を押下して、インスタンス一覧画面に戻ります。

 

 

先ほど作成したインスタンスが一覧に入っています。

 

 

「プロキシサーバ」と「K8sコントロールサーバ」を起動して、OCI CLIを活用した運用スクリプトの開発に入っていきます。
「プロキシサーバ」と「K8sコントロールサーバ」インスタンスの起動は「開始」を押下することで実現できます。

 

 

3.OCI CLIを活用した運用スクリプト開発

それではOCL CLIがセットアップされているK8sコントロールサーバに接続したいと思います。接続の概要を説明します。

 

 

システム構成図で表すと下図のようになります。

 

 

実際のコマンドで接続してみたいと思います。



[opc@プロキシサーバのhostname 鍵ファイル置き場]$ ssh -i myrsa opc@ K8sコントロールサーバのPrivateIPアドレス
[opc@K8sコントロールサーバのhostname ~]$ 

それではOCI CLIを活用した運用スクリプトを開発します。その運用スクリプトにはコンパートメントIDが必要になります。以下のように取得して、メモ帳などにコピーして控えておいてください。

 

 

Blockchainコンパートメントのocidにマウスカーソルを合わせると開く詳細ダイアログに表示される詳細なocidをコピーして、メモ帳などに貼り付けて値を控えます。

 

 

Blockchainコンパートメントのocidを控えることが出来たら、以下の流れで開発します。

  • 運用スクリプトの開発場所を確認
    /home/opc配下に運用スクリプトを配置します。
    pwdコマンドで位置を確認します。
  • 以下の運用スクリプトを作成
    viコマンドを用いて運用スクリプトを新規作成します。
    運用スクリプトの名前は「shutdown.sh」とします。
    その後chmodコマンドを用いて、作成した運用スクリプトに実行権限を付与します。

 運用スクリプトの中身は以下です。以下の構文を貼り付け、作成してください。

 

 

上記のスクリプトの活用の仕方について、すこし説明します。

有効範囲は「コンパートメント」です。皆さま自身の環境に拡張する際は、ご注意ください。
コンパートメントごとに運用スクリプトを分けても良いですし、ひとつの運用スクリプトの中にコンパートメント単位で上記構文を繰り返し入力しても良いです。

稼働を停止したいVMは、増やすことができます。半角スペース区切りで羅列してください。長くなった場合に改行は入れないように注意してください。For文を用いて、すこしだけオシャレにしてあります。

以下に実行記録を記載します。

 

 

それでは、運用に乗せる前に稼働確認をしてみましょう。
稼働確認は、実際のOracle Cloud管理コンソール上でのインスタンスの状態確認をしながら行いたいと思います。

以下の状況からOCI CLIを活用した運用スクリプトの稼働確認をおこないます。

 

 

以下のコマンドを実行します。



[opc@K8sコントロールサーバのhostname ~]$ ./shutdown.sh 

すると、稼働停止実験対象サーバの状態が「停止中・・・」に遷移します。

 

 

さらにしばらくすると稼働停止実験対象サーバの状態が「停止済」に遷移します。成功しました。

 

 

4.運用への組み込み(CRONを利用)

さて、それではさきほど作成した運用スクリプトを運用に乗せたいと思います。
ですが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に登録したいと思います。
以下の流れで設定します。

  • CRONが稼働しているか確認します。
    コマンド:service crond statusを実行します。
    Active: active (running)であれば稼働しています。
     
  • CRONの稼働を確認したら、登録します。
      コマンド:crontab –eを実行します。
    「00 21 * * * /home/opc/shutdown.sh」
      と、登録します。これは、毎晩21時に「shutdown.shをopcユーザーが実行します。」という意味です。
      CRONの詳細は以下ですので、皆さまの運用に合わせてください。
    
    
    00 21 * * * /home/opc/shutdown.sh
    意味は左から、[分] [時] [日] [月] [曜日] [コマンド]です。
    [分]:0~59の数字で設定
    [時]:0~23の数字で設定
    [日]:1~31の数字で設定
    [月]:1~12の数字で設定
    [曜日]:0が日曜日、1が月曜日、2が火曜日、3が水曜日、4が木曜日、5が金曜日、6が土曜日、7が日曜日
    [コマンド]:パスに注意して登録
    
  • CRONの登録を確認します。
      コマンド:crontab –lを実行します。
    さきほど設定した以下構文が登録されていることを確認します。
    「00 21 * * * /home/opc/shutdown.sh」

    以下に実行記録を記載します。
     

それでは、先ほど停止した稼働停止実験対象サーバのインスタンスを下図のように起動して、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


Keys to the Oracle Cloud indexページ▶▶