シェフのlog
リソースを使用して次のコードをご覧ください。Ruby/Chef:リソース 'name'を参照して関数に渡す方法はありますか?
log 'Hello there' do
level :info
notifies :run, "log_to_chat('Hello there')"
end
リソースname
を参照する方法があります(この場合は「こんにちは」)私は機能log_to_chat
にそれを渡すとき。 log_to_chatのための私の試みを追加
log 'Hello there' do
level :info
notifies :run, "log_to_chat(#{name})"
end
:
は、私のようなものを想像してみてください。
試み1:
resource_name :log_to_chat
property :message, kind_of: String, name_property: true
chat_url = 'https://chat.server/abcdef'
action :run do
execute do
command "curl -m 5 -i -X POST -d \"payload={...}\" #{chat_url}"
ignore_failure true
end
end
質問:どのようにnotifies
ラインから1つのライナーとして:message
パラメータを渡すには?
notifies :run, "log_to_chat[message]", --pass :message how??--
試み2:
module Chat
def log_to_chat(message)
chat_url = 'https://chat.server/abcdef'
action :run do
execute "curl" do
command "curl -m 5 -i -X POST -d \"payload={...}\" #{chat_url}"
ignore_failure true
end
end
end
end
編集:あなたはあなたがname
変数を参照することができます定義
ありがとうございます。それは 'notifies:run、" log_to_chat(#{name}) "'ですか? – vikingsteve
それはあなたのコードベースにもよりますが、 'log_to_chat [#{name}]'がそうである可能性が高いです。 https://docs.chef.io/resource_common.html#notifies – smefju
'log_to_chat'パーツの記述方法を教えてもらえますか?それはモジュールのメソッドかカスタムリソースですか、それともどうですか?これは基本的に単一の 'curl'コマンドです。 – vikingsteve