puppet将两行作为一行插入到configuration文件中

我创build了下一个Puppet清单文件:

node 'puppetmaster' { package { "screen": ensure => "installed"} $enhancers = [ "pixman","pixman-devel","libXfont","tigervnc-server" ] package { $enhancers: ensure => "installed" } file { '/etc/skel/.vimrc': content => ":set nu\n :set incsearch\n :set ignorecase\n :set smartcase\n:set ts=2",} file { '/root/.vimrc': content => ":set nu\nset incsearch\n:set ignorecase\n:set smartcase\n:set ts=2",} file { '/etc/sysconfig/vncserver': content => 'VNCSERVERS="6:root"\nVNCSERVERARGS[6]="-geometry 1152x864"',} } 

应用清单后,我检查/etc/sysconfig/vncserver ,它看起来像这样:

 VNCSERVERS=6:root\nVNCSERVERARGS[6]="-geometry 1152x864" 

而不是像这样分成两行:

 VNCSERVERS=6:root VNCSERVERARGS[6]="-geometry 1152x864" 

我在设置/etc/skel/.vimrc文件时使用了相同的格式,它的工作方式像一个魅力,所以我不明白为什么它不工作时尝试设置/etc/sysconfig/vncserver ,我相信它有东西做双引号"" 。 任何帮助,将不胜感激!

您需要使用双引号( " ”)而不是单引号( ' )。 就像shell,perl和其他语言一样,Puppet中的单引号表示一个string,并禁止variables插值和反斜杠转义的解释。

 file { '/etc/sysconfig/vncserver': content => "VNCSERVERS=\"6:root\"\nVNCSERVERARGS[6]=\"-geometry 1152x864\"",} 

请注意,我不得不在string中使用双引号。