OCIのWebコンソール画面からOSコマンドを実行する

コンピュート

※本記事は 2021/11/6 時点のものです

はじめに

OCIのWebコンソール画面からOCI上に作成したサーバに対し、
OSコマンドを実行することができるたいですね。
今回はこちらを行ってみます。

マニュアル:
インスタンスでのコマンドの実行
https://docs.oracle.com/ja-jp/iaas/Content/Compute/Tasks/runningcommands.htm

今のところサポートされているOSは下記のようです。
・Oracle Autonomous Linux
・Oracle Linux
・CentOS
・Windows Server

OCI WebコンソールからOSコマンドを実行したけど、動かないパターン

サーバ構築直後にOSコマンド実行を行ってもエラーになるようです…。
少し設定が必要みたいですね。
よって、その設定を行っていきます。

OCI WebコンソールからOSコマンドを実行したけど、動かないパターン

動的グループの作成

OSコマンド実行のためにはサーバ側への権限設定が必要となる模様で、
まずはOSコマンド実行を行うサーバ(コンピュートインスタンス)の OCIDを取得します。

OCIのWebコンソール画面より、
メニュー「≡」⇒「コンピュート」⇒「インスタンス」を選択します。

メニュー「≡」⇒「コンピュート」⇒「インスタンス」を選択

コマンドを実行したいコンピュートインスタンス名(ここでは tsocts01)をクリックします。

コマンドを実行したいインスタンス名(ここでは tsocts01)をクリック

コンピュートインスタンスの詳細画面が表示されます。
「コピー」をクリックして OCID を取得しています。(後で使います)

「コピー」をクリックして OCID を取得

続いて、動的グループを作成します。

OCIのWebコンソール画面より、
メニュー「≡」⇒「アイデンティティとセキュリティ」⇒「動的グループ」を選択します。

メニュー「≡」⇒「アイデンティティとセキュリティ」⇒「動的グループ」を選択

動的グループの画面が表示されます。
「動的グループの作成」をクリックします。

「動的グループの作成」をクリック

「名前」と「説明」を例として下記のように入力します。

項目名設定値
名前dynamic-group-test01-runcmd
説明コマンド実行用 動的グループ

一致ルールのところには下記のように入力します。
※’ocid1.instance.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc3olqq’
 は先程コピーしたOCIDです。

一致ルールAny {instance.id = ‘ocid1.instance.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc3olqq’}

その後で「作成」をクリックします。

動的グループの作成で「作成」をクリック

動的グループの画面が表示されます。

動的グループの画面

ポリシーの作成

続いて、先ほど作成した動的グループ用のポリシーの作成を行います。

OCIのWebコンソール画面より、
メニュー「≡」⇒「アイデンティティとセキュリティ」⇒「ポリシー」を選択します。

メニュー「≡」⇒「アイデンティティとセキュリティ」⇒「ポリシー」を選択

ポリシーの画面が開きます。
「ポリシーの作成」をクリックします。

「ポリシーの作成」をクリック

「名前」と「説明」を例として下記のように入力します。

項目名設定値
名前policy-test01-runcmd
説明コマンド実行用ポリシー

ポリシービルダーのメニュ―選択肢からは該当するものがよくわからなかった…ので、
「手動エディタの表示」をオンにして下記を入力します。
※”dynamic-group-test01-runcmd”は前の手順で作成した動的グループです。
 ”test”はコンピュートインスタンスも存在しているコンパートメント名です。

ポリシー・ビルダーAllow dynamic-group dynamic-group-test01-runcmd to use instance-agent-command-execution-family in compartment test

その後、「作成」をクリックします。

ポリシー作成の画面で「作成」をクリック

作成されたポリシーの画面が表示されます。

作成されたポリシーの画面

OCI WebコンソールからOSコマンドを実行

最初の手順で行ったように、コンピュートインスタンスの画面を開きます。
そして画面下側にスクロールしてみます。

コンピュートのインスタンスの画面

左側の「実行コマンド」をクリックし、
中央の「コマンド作成」をクリックします。

「実行コマンド」⇒「コマンド作成」をクリック

「名前」と「タイムアウトを秒単位で指定」は一旦そのままにして、
「スクリプト」に実行するコマンドを入力します。
ここでは日時を表示するコマンドである”date”を入力します。
その後「コマンド作成」をクリックします。

「コマンド作成」をクリック

画面が戻って新たな実行コマンドが追加されたことがわかります。

実行コマンド画面に戻る

しばらく待って、実行ステータスが「成功」になりました。
※この時は成功と表示されるまで約20分かかりました。理由は後ほど。

実行ステータスが「成功」になる

右側の「︙」をクリックし、「コマンドの詳細の表示」をクリックします。

右側の「︙」をクリックし、「コマンドの詳細の表示」をクリック

「出力」の所に日時が表示されており、
“date”コマンドの結果が返っていることが分かります。

dateコマンドの結果が返っている

OCI WebコンソールからOSコマンドを実行(もう1回)

先ほどの実行は約20分程度かかっていまして、
ちょっと待つ時間が長いなーと思ったのでもう1回実行してみます。
今度は”uname -n”(ホスト名を表示するのみ)コマンドです。

今度は"uname -n"(ホスト名を表示するのみ)コマンド

今度は4分程度で結果が返ってきました。

"uname -n"コマンドの実行が返ってくる

“uname -n”コマンドの実行結果ですので、想定通りホスト名の”tsocts01″が返ってきていました。

"uname -n"コマンドの実行結果

それでもちょっと時間はかかりますね。
ちなみに最初の実行が20分程度かかっていたのは、動的グループの反映で時間がかかっていたようです。
マニュアルに下記の記載がありました。

インスタンスを作成してから動的グループに追加する場合、インスタンスがコマンドのポーリングを開始するまでに最大30分かかります。

最初から早めに実行させたいなら、サービス再起動とかすればよかった模様です。
※詳しくはマニュアルへ

さいごに

OCI webコンソール画面からOSのコマンドを実行する際には
前もって権限設定が必要
・OSコマンドを実行しても即座に応答が来るわけではない
というところに注意が必要です。

インタラクティブに色々とコマンドを実行して確認したい場合は、
実際にサーバに接続したり、クラウドシェルからコンソール接続とか行ったほうがよいかもですが、
ちょっとした情報取得・操作をする際には便利に使えそうですね。