Chatting on IRC I think the problems are with the \n in the ruby HERDOC block is causing that to be output as a litteral new line in the /tmp/chef-script it runs. Replacing it with \\n should do the trick. (Make ruby output \n so that bash sees it as a newline escape, not a new-line literal.)
($0 could also be a problem but that is in a single-quotes string in the script when bash gets hold of it so should be fine.)
-ash
On 27 Jun 2012, at 21:48, Michael Glenney wrote:
> I have an issue with nastly bash command I'm trying to get chef to execute and it's not working properly, but if I run the same command from the command line it works without errors and does what I expect. Here's resource:
>
> bash "Set newrelic java options" do
> user "root"
> group "root"
>
> cwd glassfishconfig
> code <<-EOH
> awk -v searchterm="<java-config" -v payload=" <jvm-options>-javaagent:#{newrelic_dir}/newrelic-#{node[:newrelic][:version]}/newrelic.jar</jvm-options>\n <jvm-options>-Dnewrelic.config.file=#{newrelic_dir}/#{node[:app][:key]}/newrelic.yml</jvm-options>\n <jvm-options>-Dnewrelic.config.log_file_path=#{newrelic_dir}/#{node[:app][:key]}/logs</jvm-options>" '{ if ($0 ~ searchterm) print $0 "\n" payload; else print $0 }' domain.xml.newrelic.bak > domain.xml
>
> EOH
> action :nothing
> end
> and here's the error:
>
> ---- Begin output of "bash" "/tmp/chef-script20120627-8350-r7jiup" ----
>
> STDOUT:
> STDERR: awk: { if ($0 ~ searchterm) print $0 "
> awk: ^ unterminated string
>
> ---- End output of "bash" "/tmp/chef-script20120627-8350-r7jiup" ----
>
> I am not able to use a template in this case (just saying because that was suggested on IRC).
>
> Unfortunately, when using debug logging the command that is run isn't shown and there's no way I know of to tell chef-client to leave behind the /tmp/chef-script#### files (though this should be an option or happen automatically when debug logging is used because without it you can't properly troubleshoot this type of issue). I've been told in the past chef passes the command along "as it is in the resource" to the temp script and just runs it but obviously that isn't the case.
>
> I've tried different variations of the above script including escaping all double and single quotes but doesn't help. Does anyone have an additional insight or suggestions? I could just drop it into a shell script and include it as a cookbook file but it should work as I have it above. Plus I'd really like to know what the "gotcha's" are when using the script resources (what needs to be escaped, what doesn't, what won't work at all, etc.) but I haven't found anything in the documentation about it.
>
> Thanks,
>
> Mike G.
>
>
>
Archive powered by MHonArc 2.6.16.