2017-10-30 11 views
1

シェフでサービスを作成するために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スクリプトを実行するにはどうすればいいですか?

答えて

0

これは実際にサポートしているものではありません。 updated?フラグ(内部的に通知を行う)は、意図的に曖昧で、各リソースごとに異なるものを意味しますが、通常、リソースが何らかのアクションを取ると、更新されるとみなされます。その化合物は、systemd_unitの実装をめちゃくちゃにして、名前プロパティの代わりに直接リソース名を使用したように見えます(少なくともこれを将来修正するためのチケットを取得します)。

+0

https ://github.com/chef/chef/issues/6542あなたがそれを見たいと思ったら申請してください – coderanger

+0

Ok。チケットを買ってくれてありがとうございます。 – Steve

関連する問題