web-dev-qa-db-ja.com

cfengineでpidファイルを読み取るにはどうすればよいですか?

Cfengine 3でpidファイルを読み取り、実行されていない場合はそのプロセスを再起動するにはどうすればよいですか?

2
joeforker

Cfengine 2では、次のようなものを使用しました。

processes:
  "httpd" restart "/etc/init.d/Apache restart"

Cfengine 3では、プロセスの再起動は個別のコマンドとしてコーディングする必要があります。

processes:
   "httpd"
     restart_class => "start_httpd";

commands:
  start_httpd::
    "/etc/init.d/Apache restart";

これにより、httpdが実行されていない場合、クラス「start_httpd」が定義されます。次に、initスクリプトを実行して、起動することを確認します。 restart_classの動作の詳細については、 cf3リファレンスマニュアル を参照してください。

2
Fanatic

PIDファイルを直接見る代わりに、Cfengine3に選択したサービス/プロセスを管理させようとします。 Cfengine 3の場合、次のコードを使用できます(完全ではないかもしれませんが、機能します)。

body common control {
    version => "1.0";
    bundlesequence => { "check_services" };
}

bundle agent check_services {
    vars:
        "services" slist => { "Apache2", "mysql" };
        "init_scripts_path" string => "/etc/init.d"; 

    processes:
        "$(services)"
            comment => "Check if the processes for '$(services)'",
            restart_class => "restart_$(services)";

    commands:
        "${init_scripts_path}/${services} start"
            comment => "Restarting the service",
            ifvarclass => "restart_${services}";

}

このCfengine3スクリプトはUbuntuクライアント用に作成したため、ニーズと配布に合わせて調整する必要がある場合があることに注意してください。

このコードスニペットはここからダウンロードできます。

1
Valentin