シェフでサービスを作成するためにsystemd_unitを作成しようとしている場合があります。サービスが作成されたら(それが最新ではないと仮定して)、サービスを開始したい場合にのみを作成します。 bashスクリプトを呼び出して初期化を実行したいとします。シェフ:条件付きでリソースに通知する
私はこれで始まっ:
systemd_unit 'mysvc.service' do
content({
.
.
.
})
action [ :create ]
notifies :run, 'bash[mysvc.init]', :delayed
end
bash 'mysvc.init' do
code <<-CODE
.
.
.
CODE
action :nothing
end
systemd_unit 'mysvc.service' do
action [ :enable, :start ]
end
ここに私の期待があればということである:systemd_unitにRANを作成し、私のbashスクリプトを実行します。 bashスクリプトは何も表示されていないので、それ以外の時間は実行されません。
残念ながら、それは私が得意な動作ではありません。実際には、systemd_unitの:createまたは::enable、:startブロックのいずれかが実行されると、bashスクリプトが実行されます。これは、私がすでにサービス内のデータを初期化していて、再初期化を試みると失敗するため、これはうまくいかないでしょう。
サービスが新しく作成された場合にのみ、bashスクリプトを実行するにはどうすればいいですか??
https ://github.com/chef/chef/issues/6542あなたがそれを見たいと思ったら申請してください – coderanger
Ok。チケットを買ってくれてありがとうございます。 – Steve