Issue #9996 has been updated by Jacob Helwig.
This should fix things:
diff --git i/lib/puppet/util.rb w/lib/puppet/util.rb
index 80ce963..a264a0a 100644
--- i/lib/puppet/util.rb
+++ w/lib/puppet/util.rb
@@ -244,7 +244,12 @@ module Util
def execute_posix(command, arguments, stdin, stdout, stderr)
child_pid = Kernel.fork do
- command = Array(command)
+ # We can't just call Array(command), and rely on it returning
+ # things like ['foo'], when passed ['foo'], because
+ # Array(command) will call command.to_a internally, which when
+ # given a string can end up doing Very Bad Things(TM), such as
+ # turning "/tmp/foo;\r\n /bin/echo" into ["/tmp/foo;\r\n", "
/bin/echo"]
+ command = [command].flatten
Process.setsid
begin
$stdin.reopen(stdin)
----------------------------------------
Bug #9996: 2.7.5 and higher do not support multi-line strings in the 'command'
portion of 'exec'.
https://projects.puppetlabs.com/issues/9996
Author: Trevor Vaughan
Status: Accepted
Priority: High
Assignee: Jacob Helwig
Category: exec
Target version: 2.7.x
Affected Puppet version: 2.7.5
Keywords: exec, multi-line
Branch:
'Test' works, 'Test2' does not. I think that this worked in 2.7.4.
<pre>
exec { "test":
command => "/bin/echo '#Test' > /tmp/foo; /bin/echo 'bob' >> /tmp/foo;"
}
exec { "test2":
command => "/bin/echo '#Test' > /tmp/foo;
/bin/echo 'bob' >> /tmp/foo;"
}
</pre>
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://projects.puppetlabs.com/my/account
--
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-bugs?hl=en.