Please see the following code, using the log resource in chef.
log 'Hello there' do
level :info
notifies :run, "log_to_chat('Hello there')"
end
Is there a way to refer to the resource name (in this case: 'Hello there') when I pass it to the function log_to_chat.
I imagine something like:
log 'Hello there' do
level :info
notifies :run, "log_to_chat(#{name})"
end
Adding my attempts for log_to_chat.
Attempt 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
Question: how to pass the :message parameter as a one liner from the notifies line?
notifies :run, "log_to_chat[message]", --pass :message how??--
Attempt 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
edit: attempt 2 didn't work since you can't use resources in a definition
You can refer to the name variable. From documentation you can read that "name is the name of the resource block". Keep in mind that you want to use the name of block (which is Hello there in your case) instead of resource name (which is log in the snippet from question)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With