Coding style Puppet:如果>;我如何将命令包装成两行;80个字符?
在puppet中,若define命令大于80个字符,我如何将其换行成两行呢Coding style Puppet:如果>;我如何将命令包装成两行;80个字符?,coding-style,puppet,Coding Style,Puppet,在puppet中,若define命令大于80个字符,我如何将其换行成两行呢 exec { 'create_domain': command => "some command exceed 80 character...........................................................how to do how to do?.......", } 这有点难看,但是如果字符串中的最后一个字符是一个\,后跟一个换行符,那么该字符串将
exec { 'create_domain':
command => "some command exceed 80 character...........................................................how to do how to do?.......",
}
这有点难看,但是如果字符串中的最后一个字符是一个
\
,后跟一个换行符,那么该字符串将在下一行继续。我的sample.pp
清单如下:
exec { 'wrapped_string_example':
command => "/bin/echo 12345678901234567890123456789012345678901234567890\
wrapped > /var/tmp/test.txt";
}
使用puppet apply sample.pp
运行此命令将提供以下输出
$ puppet apply sample.pp
notice: /Stage[main]/Exec[wrapped_string_example]/returns: executed successfully
notice: Finished catalog run in 0.10 seconds
对创建的文件进行CATT显示已换行:
$ cat /var/tmp/test.txt
12345678901234567890123456789012345678901234567890wrapped
请参见(从Puppet v2.7.0开始)
另外,这也是一个已知的问题:如果你真的关心80cols的限制,你总是可以滥用模板来实现这个目标
exec {'VeryLongExec':
command => template("${module}/verylongexec")
}
然后将实际命令放入该模板文件中
从Puppet 3.5开始,积分应该归Jan Vansteenkiste计算。我已经使用了几个选项。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文档在这里:对于大数据块,heredocs是处理puppet清单中的长行的最佳方法。
/L
插值选项特别有用/L
导致行末尾的\
删除换行符。例如,以下操作完成了您预期的操作,剥离缩进和换行,包括尾部换行
sshkey { 'example.com':
ensure => present,
type => 'ssh-rsa',
key => @(KEY/L),
RfrXBrU1T6qMNllnhXsJdaud9yBgWWm6OprdEQ3rpkTvCc9kJKH0k8MNfKxeBiGZVsUn435q\
e83opnamtGBz17gUOrzjfmpRuBaDDGmGGTPcO8Dohwz1zYuir93bJmxkNldjogbjAWPfrX10\
8aoDw26K12sK61lOt6GTdR9yjDPdG4zL5G3ZjXCuDyQ6mzcNHdAPPFRQdlRRyCtG2sQWpWan\
3AlYe6h6bG48thlo6vyNvOD8s9K0YBnwl596DJiNCY6EsxnSAhA3Uf9jeKqlVqqrxhEzHufx\
07iP1nXIXCMUV
|-KEY
target => '/home/user/.ssh/authorized_keys',
}
或者,要保留最后的换行符,请在结束文本之前省略-
:
exec { 'create_domain':
command => @(CMD/L),
/bin/echo 123456789012345678901234567890123456789012345678901234567890123456\
wrapped > /var/tmp/test.txt
| CMD
}
GVIM只在命令的中间使用Ruby语法高亮空间不重要,那么您仍然可以在反斜杠之后继续命令下一行到“正确”列……这不是问题的答案,但是您可以在本地使用“<代码> > LILT来忽略傀儡皮内抱怨:忽略:140CARS < /代码>,如中所述,实际上您需要使用
$module\u name
,而不是$module
(至少对于Puppet 3.7而言)。请记住,您提供的HereDoc示例保留了换行符。问题是关于将清单中属于一行的命令拆分为几行。@(KEY/L)后面的逗号是否为键入错误?@Flo否,逗号不是键入错误。它看起来很奇怪,但由于解析器处理遗传的方式,它是必需的。