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

Ita*_*not 3 linux vnc puppet centos6 puppetmaster

我创建了下一个 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"',}
 }
Run Code Online (Sandbox Code Playgroud)

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

VNCSERVERS=6:root\nVNCSERVERARGS[6]="-geometry 1152x864"
Run Code Online (Sandbox Code Playgroud)

而不是像这样分成两行:

VNCSERVERS=6:root
VNCSERVERARGS[6]="-geometry 1152x864"
Run Code Online (Sandbox Code Playgroud)

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

lar*_*sks 5

您需要使用双引号 ( "") 而不是单引号 ( ')。很像 shell、perl 和其他语言,Puppet 中的单引号表示文字字符串并禁止变量插值和反斜杠转义的解释。

file { '/etc/sysconfig/vncserver':
  content => "VNCSERVERS=\"6:root\"\nVNCSERVERARGS[6]=\"-geometry 1152x864\"",}
Run Code Online (Sandbox Code Playgroud)

请注意,我必须对字符串中的双引号进行转义。