3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle Cloud] Oracle Cloud Agentコマンドを使って、コンソールからOSコマンドを実行する

Posted at

はじめに

WebコンソールからComputeインスタンスに任意のコマンドを実行する機能が実装されました。面白そうなので、試したみた。

コンソール上の機能名称は、「Oracle Cloud Agentコマンド」のようです。Computeのインスタンス詳細画面から遷移できます。Oracle Cloud Agentプロセスが、コマンド実行のリクエストを受け取って実行し、結果をコンソール(または任意のObject Storage)に表示する機能です。

当初、静的に登録したコマンドを、任意のタイミングで実行する機能だと思ったのですが、実行の都度コマンドを作成する必要があり、イメージしていた機能とちょっと違いまいした。
(コマンドを静的に登録して、ポリシーで実行権限だけをユーザに与えられるようになるといいな。。)

前提条件

マニュアルによると、いろいろと制約があります。特に、以下の制約に注意。

  • コマンド結果の出力サイズの上限は、1KB。それを超える場合は、アウトプットをObject Storageに格納するように設定する

この機能のリリース時点で、利用可能なリージョンは2つだけ。東京/大阪リージョンはまだ使えない

image.png

やってみる

Computeインスタンスの作成

2020年10月現在、この機能が利用できるPhoenixリージョンにComputeインスタンスを作成します

バケットの作成

コマンド実行結果の出力が1KBを超える場合を考え、格納先のバケットを用意しておきます

Object Storageへの通信経路

ComputeインスタンスをPrivateサブネットに作っている場合は、Service GWまたはNAT GWをたてて、Object Storageと通信できるようにします。

動的グループの作成

インスタンス・プリンシパルの設定をする必要があるため、動的グループを作成します。マニュアルにあるように、作ったコンピュートインスタンスのOCIDを含めます。
image.png

ポリシーの作成

マニュアルにあるとおりに、動的グループ(インスタンス・プリンシパル)に対して権限を与えてあげます。

Object Storageを併用する場合は、Object Storageへの権限も与えます。実行スクリプトと出力先が異なるバケットの場合は、実行スクリプト格納バケットにread、出力先バケットにmanage権限を与えます

image.png

AgentのUpdate

Computeインスタンスにログインします。2020年10月より前のイメージを使ってComputeインスタンスを作成した場合、agentのバージョンが古いので、updateしてあげる必要があります。2020年10月現在で利用可能な、Oracle Linuxのイメージではupdateする必要がありました。

# rpm -q oracle-cloud-agent
oracle-cloud-agent-1.3.2-2718.el7.x86_64

# yum update oracle-cloud-agent
… 省略

# rpm -q oracle-cloud-agent
oracle-cloud-agent-1.5.1-3277.el7.x86_64

コマンド登録

Computeの詳細画面から、Oracle Clouda Agentコマンドのリンクに遷移し、コマンド作成します。とりあえず、ps -efコマンドで試してみます。

image.png

「コマンド作成」ボタンを押下すると、Oracle Cloud Agentにリクエストが飛んでいきます。結果が返ってくるのが案外遅いので、5分くらいはがんばって待ちます。

実行ステータスが、成功になったのを確認後、「コマンドの詳細の表示」を押します
image.png

出力が見切れてます… (1KBの制限)
image.png

なので、今度は出力先をObject Storageにして実行コマンドを作成してみます。
image.png

実行後、指定したバケットにObjectが出力されいてるので、ダウンロードします。
image.png

画像は張りませんが、こっちの出力は見切れていませんでした。

root権限が必要なコマンドを実行してみる

Oracle Clouda Agentコマンドは、「ocarun」というOSユーザの権限で実行されるようです。
試しに、実行コマンドにwhoami; ls -ltr /rootと入力して実行してみると以下のような出力になります
image.png

rootユーザ権限が必要なコマンドを実行する場合は、(マニュアルにあるとおり)あらかじめ、sudoの設定ファイルに、ocarunユーザに許可するコマンドを書いておいてあげる必要があります。

例えばlsコマンドだけ許可する場合、以下のようなファイルを作成して

# vi /etc/sudoers.d/101-oracle-cloud-agent-run-command
ocarun ALL=(ALL) NOPASSWD:/bin/ls

# visudo -cf /etc/sudoers.d/101-oracle-cloud-agent-run-command
/etc/sudoers.d/101-oracle-cloud-agent-run-command: parsed OK

Oracle Clouda Agentコマンドから、sudo ls -l /rootが実行できるか確認してみます。

image.png

できました。

3
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?