在puppet中,如果define命令是> 80个字符,我怎么能用两行来做呢?
exec { 'create_domain':
command => "some command exceed 80 character...........................................................how to do how to do?.......",
}
答案 0 :(得分:19)
这有点难看,但如果字符串中的最后一个字符是'\'后跟换行符,那么该字符串将在下一行继续。我的sample.pp清单如下:
class test {
exec { 'create_domain':
command => "/bin/echo 1234567890123456789012345678901234567890123456789012345678901234567890\
wrapped > /var/tmp/test.txt";
}
}
node 'pwan-central' {
include test
}
使用Puppet 2.7.1在Ubuntu 11.10上使用'puppet apply sample.pp'运行此命令会提供以下输出
mrpwan@pwan-central:~$ puppet apply sample.pp
notice: /Stage[main]/Test/Exec[create_domain]/returns: executed successfully
notice: Finished catalog run in 0.10 seconds
捕获创建的文件显示行已包装:
mrpwan@pwan-central:~$ cat /var/tmp/test.txt
1234567890123456789012345678901234567890123456789012345678901234567890wrapped
请参阅https://github.com/puppetlabs/puppet/blob/9fbb36de/lib/puppet/parser/lexer.rb#L537(自Puppet v2.7.0起)
答案 1 :(得分:6)
从Puppet 3.5开始,你有两个我用过的选项。 Ruby允许您通过几行连接字符串。
string = "line #1"\
"line #2"\
"line #3"
p string # => "line #1line #2line #3"
另一个选择,从Puppet 3.5开始,他们添加了HereDoc功能。这将允许您将字符串放在源代码文件的一部分中,该部分文件被视为单独的文件。
$mytext = @(EOT)
This block of text is
visibly separated from
everything around it.
| EOT
puppet文档在这里:https://docs.puppet.com/puppet/4.9/lang_data_string.html#heredocs
答案 2 :(得分:5)
对于大块数据,heredocs是处理Puppet清单中的长行的最佳方法。 set timeout <time in second>
插值选项特别有用。 /L
导致行末的/L
删除换行符。例如,以下代码可以满足您的期望,去除缩进和换行符,包括结尾的换行符。
\
答案 3 :(得分:4)
如果你真的关心80cols限制,你总是可以滥用模板来实现这个目标
exec {'VeryLongExec':
command => template("${module}/verylongexec")
}
然后将实际命令放在该模板文件中
应该向Jan Vansteenkiste致信