Service
これは、リソースではなくリソースを介してモデル化する必要があるもののように聞こえExec
ます。そのために、システムの通常のサービス制御サブシステム (initscripts、systemd など) を介してサービスを管理する必要はありませんが、適切なスクリプトや構成ファイルを自分で作成する必要がある場合でも、そのように手配することをお勧めします。 . ただし、この場合、hq-agent.sh
スクリプトは従来の initscript と同じではないにしても、似たインターフェイスを持っているように見えます。もしそうなら、おそらく通常のシステムサービスとして設定するのはかなり簡単でしょう. そうすれば、管理は次のように簡単になります
service { 'hq-agent':
ensure => 'running',
enable => true,
}
ただし、アドホックスクリプトを使用してサービスを管理したいだけの場合は、Puppet でサポートできます。具体的には、Service
リソースにはstart
、、、、および属性があり、これらの属性を使用して、サービスを管理するための任意のコマンドを指定できます。例えば、restart
status
stop
service { 'hq-agent':
ensure => 'running',
provider => 'service',
hasstatus => false,
hasrestart => false,
status => 'hq-agent.sh status',
start => 'hq-agent.sh start',
stop => 'hq-agent.sh stop',
path => '/path/to/hyperic/bin',
# no 'enable' attribute specified
}
hq-agent.sh
その特定の例では、標準の SysV initscript との表面的な類似性に基づいて、スクリプトの終了コードについていくつかの仮定を立てています。具体的には、 LSB 仕様に準拠していることを前提としています。実際にそうでない場合、終了コードではなくスクリプトの出力をテストする必要があるため、典型的なアプローチは、出力を にパイプすることgrep
です。例えば、
status => 'hq-agent.sh status | grep -q running'
ただし、標準出力ではなく、スクリプトの標準エラーをテストする必要がある場合があることに注意してください。