IT 自動化、Omnishell
Omnishell の概要
Omnishellは、IT オーケストレーション/自動化に使用される Pandora FMS Enterprise の機能です。これは、完全にネイティブな Pandora FMS コンソールおよびエージェントを統合したコンソールであり、コマンドまたはコマンドのブロックを定義し、それらを実行する対象を選択できます。我々のチュートリアル動画 «IT automation in Pandora FMS: Omnishell» も参照ください。
Omnishell は、Tentacle を介した Pandora FMS の異なるコンポーネント間の通信に基づいており、プログラムしたいコマンドの実行と応答を安全に実現します。
Pandora FMS コンソールに、依存パッケージ php-yaml のインストールおよび、GNU/Linux エージェントに依存パッケージ perl-YAML-Tiny をインストールしておく必要があります。
Tentacle サーバの追加設定
バージョン NG 742 およびそれ以前のみ
- Tentacle サーバ は、
.rcmd
ファイルに対応できるように設定を変更する必要があります。
- これらのファイルには ソフトウエアエージェント がダウンロードして評価するコマンド定義が含まれます。
- Tentacle サーバファイルフィルタ定義は以下から設定する必要があります。
/etc/tentacle/tentacle_server.conf
を修正します。
# Filters (regexp:dir,regexp:dir...) filters .*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.lock:trans;.*\.rcmd:commands
- Pandora FMS サーバをインストールする際に設定される
tentacle_server.conf.new
をコピーしても構いません。
- .rcmd ファイルは新しいディレクトリに配置されます。
/var/spool/pandora/data_in/commands
- このフォルダは、Pandora FMS サーバを管理するユーザとコンソールを管理する Apache のアクセス許可が必要です。
chown pandora:apache -R /var/spool/pandora/data_in/commands chmod g+s /var/spool/pandora/data_in/commands
- 注意: ハッシュ は、コマンド定義の特定のパラメーターに基づいて使用されます。
- それぞれの場合に応じて、GNU/Linux® または、MS Windows® に従って、Tentacle プロトコルがインストールされていることを確認します。
処理
Omnishell タスクは、3つの要素から定義されます。
前提条件(Precondition)
順次実行ごとの 1つまたは複数のコマンドで、それらすべてが正常実行される必要があります。(結果 errorlevel 0
)
コマンド(Commands)
対象のソフトウエアエージェントで逐次実行さる一覧です。
事後条件(Postcondition)
順次実行ごとの 1つまたは複数のコマンドで、それらすべてが正常実行される必要があります。(結果 errorlevel 0
)
前提条件、コマンド、または事後条件で定義されたコマンドのいずれかが対話モードになり、実行フローがブロックされると、タスクは中断されます。 ソフトウェアエージェント自体は、そのタスクに設定された タイムアウト の後に処理を破棄します。
利用例
GNU Linux の例
新しい Omnishell ツールの動作プロセスをより理解するために例を説明します。
問題> 目的は、CentOS 6 システムで HTTPD サービスの自動起動をまとめて設定することです。
- 前提条件は何か? サービスがインストール済みとして表示されることで、そうでない場合は次のようにインストールします。
例:
[ `rpm -qa | grep -i httpd | wc -l` -lt 1 ] || yum install -y httpd
この行は、サービスがインストールされているかどうかを確認し、インストールされていない場合はインストールします。
- 主なゴールは何か? HTTPD サービスを起動し自動起動設定をすることです。
これをするには、以下のコマンドを利用します。
/etc/init.d/httpd restart chkconfig httpd on
これにより、リモートマシンでサービスが開始され、サービスが起動するように構成されます。
- 何が行われたか検証する方法は? システムがサービスを有効化し、リッスンしていることを確認します。
[ `netstat -lptn | grep 80 | grep LISTEN | wc -l` -gt 0 ]
エージェントが実行する必要のあるアクションが明確になったら、Omnishell でコマンドを作成します。
コマンドを作成したら、必要なエージェントを割り当てます。
コマンド実行の進捗は、選択したエージェントで見ることができます。
表示画面で、コマンド実行の予測残り時間を見ることができます。
大量のコマンド実行を適用すると、表示はつぎのようになります。
エージェントの応答を受信すると実行結果が表示されます。 ボックスをクリックすると、追加情報を含む画面が表示されます。
MS Windows の例
この環境の Omnishell はまだ開発途中であるため、その機能の一部は変更される可能性があるか、まだ利用できません。これは一時的なものですが、お詫びします。
Pandora FMS コンソールでの設定プロセスに関しては、前述の GNU/Linux の例 で実行したのとまったく同じ手順を行うと、実行するコードのみ変更されます。
この例は単純であるため、前提条件とメインタスクステージのみがそれぞれ使用されます。
powershell.exe -command "Start-Sleep -Seconds 1"
powershell.exe -command "$mode = Get-Executionpolicy ; if ( $mode -like "restricted" ) {Write-Error -Message "0"}"
PowerShell は、システム管理者向けに特別に考案された新しい Windows shell です。 これには、インタラクティブなシステムシンボルと一緒にまたは別々に使用できるスクリプト環境が含まれます。これはオペレーティングシステムとともにインストールされますが、GitHub のリポジトリから PowerShell Core をインストールして、最新の更新バージョンを入手することもできます。 PowerShell に関するさらに興味深い情報は、Pandora FMS ブログ で確認できます。
前提条件では、PowerShell がインストールされて使用できることが確認されます。インストールされていない場合は、エラーが返され、次のステップが実行できません。
メインタスクでは、PowerShell で記述された スクリプト の実行可否について確認します。適切に実行されれば、チェック段階でコードを追加して、より長く複雑なタスクを実行できます。詳細については、モジュールでスクリプトを実行する方法 または PowerShell を用いたモジュールを作成するためのテンプレートの使用方法 に関するドキュメントを確認してください。
ソフトウェアエージェントのインストール中に、オプション リモート設定を有効にする(Enable remote config) をチェックします。 そのエージェントがすでにインストールされている場合は、管理者権限でファイル %PROGRAMFILES%\pandora_agent\pandora_agent.conf
を変更し、次の行を追加(または変更)します: remote_config 1
。 ホームメニューの Pandora FMS プログラムのグループでは、スクリプト %PROGRAMFILES%\ pandora_agent\scripts\edit_config_file.bat
に直接アクセスして、作業を簡単に行うことができます。
コメント
- エージェントは、それぞれのブロックのそれぞれの要求を実行します。
- 各要求の評価が 0 (
error_level!= 0
) でない場合、評価を停止しコマンドは失敗したと見なされます。 - エージェントは、再試行回数と最大実行時間として、リトライパラメータとタイムアウトパラメータの値を利用します。
- 結果に関係なく、エージェントは実行済状態を保存します。 各コマンドは1回だけ実行されます。
- コマンドの名前を更新すると、参照先が変更されるため、エージェントはコマンドを再度実行します。
- 同じエージェントに必要な数のコマンドを割り当てることができます。
- エージェントコマンドの実行は、監視に影響する場合があります。 エージェント間隔よりも長いタイムアウトを使用しないでください。