Pandora FMS エンドポイントデプロイスクリプト
概要
Linux 用エンドポイントインストーラ。常に tarball からインストールを行い(RPMは使用しません)、ダウンロードした tarball が正規の Pandora FMS EndPoint であることを検証した上で、Pandora FMS サーバへ報告を行うようにエージェントを設定します。
- スクリプト: `../pandora_agent_deploy.sh`
- 対象: `packages.pandorafms.com` から取得します。
- 対応OS: RHEL/Fedora (EL7/8/9/10)、SUSE/OpenSUSE、Debian/Ubuntu。
- 対応アーキテクチャ: `x86_64` (バイナリ形式のエージェント)。
x86、armv7l、aarch64は自動的にPERL_SOURCES(ソースからのビルド) に切り替わります。その他のアーキテクチャでは処理が中断されます。
クイックスタート
最小構成のインストール (GO エージェント、安定版チャネル):
export PANDORA_SERVER_IP='10.0.0.1' curl -sSL https://pfms.me/agent-deploy | bash
完全自動(プロンプトなし):
export PANDORA_SERVER_IP='10.0.0.1' \ PANDORA_AGENT_PACKAGE=GO \ PANDORA_AGENT_RELEASE=STABLE \ PANDORA_SKIP_CONFIRMATION=1 curl -sSL https://pfms.me/agent-deploy | bash
環境変数
要求事項
| 変数 | 説明 |
|---|---|
PANDORA_SERVER_IP | 必須。エージェントのレポート先となる Pandora FMS サーバの IP アドレスまたはホスト名。 これが設定されていない場合、スクリプトは中止されます。 |
パッケージ選択
| 変数 | デフォルト | 許容値 |
|---|---|---|
PANDORA_AGENT_PACKAGE ( PANDORA_AGENT_PACKAGE_TYPE 経由) インストールする エージェントの tarball を 選択します。 パッケージの選択 を参照してください。 | GO | GO, PERL, PERL_SOURCES, または直接の http(s):// URL |
PANDORA_AGENT_PACKAGE_TYPE PANDORA_AGENT_PACKAGE が設定されていない 場合にのみ使用される フォールバックタイプ。 デフォルトタイプを 使用しつつ、 直接 URL による 上書きも許可したい 場合に便利です。 | GO | GO, PERL, PERL_SOURCES |
PANDORA_AGENT_RELEASE リリースチャネル。 STABLEは…/latest から取得し、 BETAは …/nightlies から取得します。 リリースチャネル を参照してください。 | STABLE | STABLE, BETA (大文字・小文字を区別しない) |
PANDORA_SKIP_CONFIRMATION 1に設定すると、 対話型の確認 プロンプトをスキップ します。CI/CDや 自動化パイプラインで 使用します。 確認 を参照してください。 | 未設定 | 1 / 未設定 |
エージェント設定 (オプション)
これらはすべて、インストール後に sed を使用して /etc/pandora/pandora_agent.conf に挿入されます。変数が設定されていない場合、対応する設定行は変更されずにそのまま残ります。
| 変数 | 影響を受ける設定キー | 効果 |
|---|---|---|
PANDORA_REMOTE_CONFIG | remote_config | サーバからのリモート設定を 有効/無効にします。 |
PANDORA_GROUP | group | エージェントグループを設定します。 |
PANDORA_DEBUG | debug | デバッグモードを有効にします (詳細なログ出力)。 |
PANDORA_AGENT_NAME | agent_name | エージェント名を設定します (行のコメントを解除します)。 |
PANDORA_AGENT_ALIAS | agent_alias | エージェントの別名を設定します (行のコメントを解除します)。 |
PANDORA_SECONDARY_GROUPS | secondary_groups | セカンダリグループを設定します (行のコメントを解除します)。 |
PANDORA_AGENT_SSL | server_ssl | Tentacle 接続 の SSL を有効にします (行のコメントを解除します)。 |
TIMEZONE | シンボリックリンク /etc/localtime | システムのタイムゾーンを設定します (例: Europe/Madrid)。 |
OS 動作
| 変数 | デフォルト | 指定可能な値 | 説明 |
|---|---|---|---|
RHEL_CHECK_SUBSCRIPTION | 1 | 0 / 1 | 1 に設定すると、RHEL (Oracle Linux ではない) 上で インストール前に subscription-manager の ステータスを確認します。 サブスクリプションの確認をスキップするには 0 に設定します。 |
PANDORA_SKIP_DEPENDENCIES | 未設定 | 1 / 未設定 | 1 に設定すると、OS 依存関係の インストール ( perl、libnsl など) を すべてスキップします。 依存関係を事前に手動で インストールする場合に使用します。 |
パッケージ選択
タイプセレクター
| 値 | ダウンロードするtarball (安定版) | 説明 |
|---|---|---|
GO | pandorafms_one_agent_linux-latest.go.tar.gz | Go エージェント (バイナリ)。 デフォルト。 |
PERL | pandorafms_one_agent_linux-latest.tar.gz | Perl エージェント (コンパイル済みバイナリ tarball)。 |
PERL_SOURCES | pandorafms_one_agent_linux-latest.src.tar.gz | ソースからの Perl エージェント (対象マシンに Perl が必要)。 |
- セレクターは大文字と小文字を区別しません('go'、'Go'、'GO' のいずれも有効です)。
- 'PERL_SOURCES' は、エイリアスである
PERLSOURCES、PERL_SRC、PERLSRCも受け付けます。
直接 URL
値が http:// または https:// で始まる場合、その値がそのまま使用され、デフォルトバージョンを決定するロジックはスキップされます。その際、黄色い警告が表示されます。
PANDORA_AGENT_PACKAGE is a direct URL, default version logic (GO/PERL/PERL_SOURCES) is skipped.
インストール前には依然として tarball の検証が行われるため(Tarballの検証 を参照)、誤った URL を指定しても、不正なデータがインストールされることなく、即座に失敗します。
export PANDORA_SERVER_IP='10.0.0.1' \ PANDORA_AGENT_PACKAGE='https://my-ci.example.com/builds/agent-1234.tar.gz'
不正な値
PANDORA_AGENT_PACKAGE にタイプセレクターでも URL でもない値が設定されている場合、スクリプトは赤色のエラーを表示して停止します。
アーキテクチャの上書き
バイナリ形式のエージェント(GO、PERL)は、x86_64 でのみ動作します。スクリプトが x86、armv7l、または aarch64 を検出すると、パッケージタイプを自動的にPERL_SOURCES(ソースビルド)に上書きし、黄色の警告メッセージを表示します。
Arch: armv7l is not supported by the binary agent, switching to PERL_SOURCES (source build). Overriding PANDORA_AGENT_PACKAGE from GO to PERL_SOURCES for arch armv7l.
以下の場合は、この上書き設定は適用されません。
- ユーザが既に
PERL_SOURCESを選択している場合(変更は不要です)。 - ユーザが直接 URL を指定した場合(その指定は尊重されますが、当該アーキテクチャではソースからのビルドが必要であることを示す黄色の警告が表示されます)。
リリースチャネル
PANDORA_AGENT_RELEASE は、安定版(stable)とベータ版(nightly)のビルドのいずれかを選択します。
| 値 | ベースURL |
|---|---|
STABLE Tarball のサフィックス latest | https://packages.pandorafms.com/pandorafms/latest |
BETA Tarball のサフィックス nightlies | https://packages.pandorafms.com/pandorafms/nightlies |
したがって、PANDORA_AGENT_RELEASE=BETA PANDORA_AGENT_PACKAGE=GO を指定した場合、ダウンロードされる tarball は以下のようになります。
https://packages.pandorafms.com/pandorafms/nightlies/pandorafms_one_agent_linux-nightlies.go.tar.gz.
値は大文字に正規化されるため、beta、Beta、BETA はいずれも有効です。無効な値を指定すると、赤色でエラーが表示され、処理が中断されます。
BETA 警告
PANDORA_AGENT_RELEASE=BETA の場合、nightly 版の URL を示す黄色の警告が表示されます。
PANDORA_SKIP_CONFIRMATION の設定に応じて、スクリプトは確認を求めるか、あるいは自動的に処理を続行します(確認 を参照)。
確認
confirm() 関数は、処理を続行するためにユーザに Y または y の入力を求めます。/dev/tty から読み取りを行うため、スクリプトがパイプ経由で実行される場合(curl … | bash など)でも動作します。
PANDORA_SKIP_CONFIRMATION | PANDORA_AGENT_RELEASE | 動作 |
|---|---|---|
未設定 / 1 以外 | BETA | 黄色の警告を表示し、続行するかどうか「Y/y」の入力を求めます。それ以外の入力では処理を中断します。 |
1 | BETA | 黄色の警告のみを表示し、入力を求めずに続行します。 |
| 任意の値 | STABLE | 確認のプロンプトは表示されません(STABLE版では不要なため)。 |
CI/CD / 自動化での利用: スクリプトが入力待ちで停止することがないよう、常に PANDORA_SKIP_CONFIRMATION=1 を設定してください。
export PANDORA_SERVER_IP='10.0.0.1' \ PANDORA_AGENT_RELEASE=BETA \ PANDORA_SKIP_CONFIRMATION=1
Tarball 検証
スクリプトはダウンロード後、インストール前に tarball を検証します。2つの層があります:
- 構造(Structural) —
tar tzfを使用して内容を一覧表示し、以下のエントリが存在することを確認します。unix/pandora_agent_installerunix/pandora_agentunix/tentacle_client
- フィンガープリント(Fingerprint) —
unix/pandora_agent_installerを標準出力(STDOUT)に展開し、文字列Pandora FMS Agent Installer for Unixが含まれているかを確認します。
いずれかの層で処理に失敗した場合、スクリプトはダウンロードした URL を含むエラーを赤色で表示し、一時ディレクトリをクリーンアップして終了します。これにより、Pandora FMS エージェントではない tarball(例:コンソールやサーバのパッケージを指す誤った URL など)がインストールされるのを防ぎます。
インストールフロー
PANDORA_SERVER_IPが設定されているか確認します。grep、sed、curlが利用可能か確認します。/etc/os-release(ID_LIKE/ID) から OS を検出します。RHEL/Fedora/SUSE/Debian 以外の場合は処理を中断します。- root 権限を確認します。
packages.pandorafms.comへの接続性を確認します。- アーキテクチャを確認します。
x86_64の場合は選択されたパッケージで処理を続行します。x86、armv7l、aarch64の場合は自動的にPERL_SOURCESに切り替わります(これらのアーキテクチャではバイナリエージェントは動作しないため)。その他のアーキテクチャでは処理を中断します。 PANDORA_AGENT_PACKAGE(タイプ選択または直接 URL)およびPANDORA_AGENT_RELEASE(stable/beta)を決定します。BETA の場合は確認を求められることがあります。- 一時作業ディレクトリ
$HOME/pandora_deploy_tmpを作成します。 - 依存関係をインストールします(
PANDORA_SKIP_DEPENDENCIES=1の場合はスキップ)。依存関係はエージェントタイプによって異なります:- GO:
perl tar(+ Debian ではprocps)。 - PERL:
perl perl-Sys-Syslog unzip tar(+ RHEL: libnsl/libxcrypt, SUSE: なし, Debian: procps)。 - PERL_SOURCES: 完全なセット(
perl-Scalar-List-Utils、perl-IO-Socket-SSL、perl-Digest-MD5、perl-threads、perl-Thread-Semaphore、libnsl(RHEL);perl-YAML-Tiny、perl-IO-Socket-SSL、libnsl3(SUSE);libsys-syslog-perl、libyaml-tiny-perl、libio-socket-ssl-perl、libscalar-list-utils-perl(Debian) を含む)。
curlを使用して tarball をダウンロードします。- tarball を検証します(構造およびフィンガープリント)。 -
install_tarballを使用してインストールします:tar xvzf+cd unix && ./pandora_agent_installer –install。 PANDORA_*変数を使用して/etc/pandora/pandora_agent.confを設定します。- Docker/systemd への対応:
systemctl statusが失敗した場合は、pandora_agent_daemonを/etc/init.d/にコピーし、そこで再起動します。 pandora_agent_daemonを再起動し、プロセスが実行中であることを確認します(1秒間隔で最大5回再試行)。$HOME/pandora_deploy_tmpを削除(クリーンアップ)します。- 緑色で成功メッセージを表示します。
ログ
すべてのコマンド出力は /tmp/pandora-agent-deploy-YYYY-MM-DD.log に書き込まれます。失敗した場合は、スクリプトがログのパスを表示します。
例
GO エージェント、安定版、エージェント名とグループ指定
export PANDORA_SERVER_IP='10.0.0.1' \ PANDORA_AGENT_PACKAGE=GO \ PANDORA_AGENT_NAME='web-01' \ PANDORA_GROUP='Web' curl -sSL https://pfms.me/agent-deploy | bash
ソースでの Perl エージェント、beta 版、自動
export PANDORA_SERVER_IP='10.0.0.1' \ PANDORA_AGENT_PACKAGE=PERL_SOURCES \ PANDORA_AGENT_RELEASE=BETA \ PANDORA_SKIP_CONFIRMATION=1 curl -sSL https://pfms.me/agent-deploy | bash
直接 URL (カスタムビルド)、自動
export PANDORA_SERVER_IP='10.0.0.1' \ PANDORA_AGENT_PACKAGE=\ 'https://ci.internal/builds/pandorafms_one_agent_linux-999.go.tar.gz' \ PANDORA_SKIP_CONFIRMATION=1 \ curl -sSL https://pfms.me/agent-deploy | bash
RHEL でサブスクリプションチェックなし
export PANDORA_SERVER_IP='10.0.0.1' \ RHEL_CHECK_SUBSCRIPTION=0 curl -sSL https://pfms.me/agent-deploy | bash
SUSE / OpenSUSE (GO エージェント)
export PANDORA_SERVER_IP='10.0.0.1' \ PANDORA_AGENT_PACKAGE=GO curl -sSL https://pfms.me/agent-deploy | bash
依存ファイルのインストールなし (事前にインストールされたシステム)
export PANDORA_SERVER_IP='10.0.0.1' \ PANDORA_SKIP_DEPENDENCIES=1 curl -sSL https://pfms.me/agent-deploy | bash
対応 OS マトリックス
| OS | バージョン | パッケージマネージャー | 備考 |
|---|---|---|---|
| RHEL / CentOS / Rocky / Alma | 7 | yum | |
| RHEL / CentOS / Rocky / Alma | 8 | dnf | PERL用に libnsl が必要 |
| RHEL / Rocky / Alma | 9 | dnf | PERL用に libnsl libxcrypt-compat が必要 |
| RHEL / Rocky / Alma | 10 | dnf | PERL用に libnsl libxcrypt-compat が必要 |
| SUSE / OpenSUSE | Tumbleweed / Leap | zypper | 追加の perl サブパッケージは不要 (すべて perl に含まれる)。PERL_SOURCES 用に libnsl3 が必要。 |
| Debian / Ubuntu | 22.04+ | apt | すべてのタイプで procps が必要。 |
テスト結果
以下の結果は、BETA チャネル(PANDORA_AGENT_RELEASE=BETA)を使用したコンテナ化テストによるものです。
対応 OS(完全サポート)
| OS | GO | PERL | PERL_SOURCES |
|---|---|---|---|
| Rocky Linux 8 | 🆗 | 🆗 | 🆗 |
| Rocky Linux 9 | 🆗 | 🆗 | 🆗 |
| Rocky Linux 10 | 🆗 | 🆗 | 🆗 |
| Ubuntu 22.04 | 🆗 | 🆗 | 🆗 |
| Ubuntu 24.04 | 🆗 | 🆗 | 🆗 |
| Ubuntu 26.04 | 🆗 | 🆗 | 🆗 |
| openSUSE Tumbleweed | 🆗 | インストール失敗、 起動せず — SUSEに libnsl.so.1 が 存在しないため (バイナリがこれを必要とする) | 🆗 |
追加テスト OS
| OS | GO | PERL | PERL_SOURCES |
|---|---|---|---|
| Debian 12 | 🆗 | 🆗 | 🆗 |
| Debian 13 | 🆗 | 🆗 | 🆗 |
| Fedora 43 | 🆗 | 失敗: libnsl + libxcrypt-compat が必要 (デフォルトでは未インストール) | 🆗 |
| AlmaLinux 9 | 🆗 | 🆗 | 🆗 |
| AlmaLinux 10 | 🆗 | 🆗 | 🆗 |
| CentOS Stream 9 | 🆗 | 🆗 | 🆗 |
| CentOS Stream 10 | 🆗 | 🆗 | 🆗 |
パイプラインに関するメモ
- BETA チャネルを非 TTY 環境(コンテナや CI/CD など)で使用する場合、
PANDORA_SKIP_CONFIRMATION=1の設定が必要です。 PANDORA_SKIP_DEPENDENCIES=1を指定すると、OS パッケージのインストールがスキップされます。このオプションは、必要な依存関係が既に導入されている場合にのみ使用してください(スクリプトおよび Go エージェントのpandora_agent_installerは、いずれもperlとtarを必要とします)。- Oracle Linux はサポート対象外です。これは、同 OS のベースリポジトリに
perlが含まれていないためです。ol8_codeready_builderや EPEL を有効にすることで解決できる可能性がありますが、それらの設定は本スクリプトの対象範囲外となります。 - Alpine Linuxには
bashが含まれておらず、代わりにbusybox ashが使用されていますが、これは本スクリプトで使用されている bash 構文をサポートしていません。