Search code examples
coding-stylepuppet

Puppet: How can I wrap a command into two line if >80 characters?


In puppet, if define command is > 80 characters, how can I wrap into two line to do it?

  exec { 'create_domain':
    command => "some command exceed 80 character...........................................................how to do how to do?.......",
  }

Solution

  • It's sort of ugly, but if the last character in a string is a \ followed by a newline, then the string is continued on the next line. My sample.pp manifest is below:

    exec { 'wrapped_string_example':
      command => "/bin/echo 12345678901234567890123456789012345678901234567890\
    wrapped > /var/tmp/test.txt";
    }
    

    Running this with puppet apply sample.pp gives the following output

    $ puppet apply sample.pp
    notice: /Stage[main]/Exec[wrapped_string_example]/returns: executed successfully
    notice: Finished catalog run in 0.10 seconds
    

    And catting the created file shows the lines have wrapped:

    $ cat /var/tmp/test.txt 
    12345678901234567890123456789012345678901234567890wrapped
    

    See https://github.com/puppetlabs/puppet/blob/9fbb36de/lib/puppet/parser/lexer.rb#L537 (as of Puppet v2.7.0)

    Also this is sort of a known issue: http://projects.puppetlabs.com/issues/5022