[Oracle Cloud] Oracle Cloud Agentコマンドを使って、コンソールからOSコマンドを実行する
はじめに
WebコンソールからComputeインスタンスに任意のコマンドを実行する機能が実装されました。面白そうなので、試したみた。
コンソール上の機能名称は、「Oracle Cloud Agentコマンド」のようです。Computeのインスタンス詳細画面から遷移できます。Oracle Cloud Agentプロセスが、コマンド実行のリクエストを受け取って実行し、結果をコンソール(または任意のObject Storage)に表示する機能です。
当初、静的に登録したコマンドを、任意のタイミングで実行する機能だと思ったのですが、実行の都度コマンドを作成する必要があり、イメージしていた機能とちょっと違いまいした。
(コマンドを静的に登録して、ポリシーで実行権限だけをユーザに与えられるようになるといいな。。)
前提条件
マニュアルによると、いろいろと制約があります。特に、以下の制約に注意。
- コマンド結果の出力サイズの上限は、1KB。それを超える場合は、アウトプットをObject Storageに格納するように設定する
この機能のリリース時点で、利用可能なリージョンは2つだけ。東京/大阪リージョンはまだ使えない
やってみる
Computeインスタンスの作成
2020年10月現在、この機能が利用できるPhoenixリージョンにComputeインスタンスを作成します
バケットの作成
コマンド実行結果の出力が1KBを超える場合を考え、格納先のバケットを用意しておきます
Object Storageへの通信経路
ComputeインスタンスをPrivateサブネットに作っている場合は、Service GWまたはNAT GWをたてて、Object Storageと通信できるようにします。
動的グループの作成
インスタンス・プリンシパルの設定をする必要があるため、動的グループを作成します。マニュアルにあるように、作ったコンピュートインスタンスのOCIDを含めます。
ポリシーの作成
マニュアルにあるとおりに、動的グループ(インスタンス・プリンシパル)に対して権限を与えてあげます。
Object Storageを併用する場合は、Object Storageへの権限も与えます。実行スクリプトと出力先が異なるバケットの場合は、実行スクリプト格納バケットにread、出力先バケットにmanage権限を与えます
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コマンドで試してみます。
「コマンド作成」ボタンを押下すると、Oracle Cloud Agentにリクエストが飛んでいきます。結果が返ってくるのが案外遅いので、5分くらいはがんばって待ちます。
実行ステータスが、成功になったのを確認後、「コマンドの詳細の表示」を押します
なので、今度は出力先をObject Storageにして実行コマンドを作成してみます。
実行後、指定したバケットにObjectが出力されいてるので、ダウンロードします。
画像は張りませんが、こっちの出力は見切れていませんでした。
root権限が必要なコマンドを実行してみる
Oracle Clouda Agentコマンドは、「ocarun」というOSユーザの権限で実行されるようです。
試しに、実行コマンドにwhoami; ls -ltr /rootと入力して実行してみると以下のような出力になります
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が実行できるか確認してみます。
できました。
Author And Source
この問題について([Oracle Cloud] Oracle Cloud Agentコマンドを使って、コンソールからOSコマンドを実行する), 我々は、より多くの情報をここで見つけました https://qiita.com/NSO-KC/items/6c540931864c95565d45著者帰属:元の著者の情報は、元の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 .