web-dev-qa-db-ja.com

puppetは、2行を1つとして構成ファイルに挿入します

次の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"

このように2行に分ける代わりに:

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

/etc/skel/.vimrcファイルを設定するときに同じ形式を使用しましたが、それは魅力のように機能したので、/etc/sysconfig/vncserverを設定しようとしても機能しない理由がわかりません。これは、何か関係があると思います。二重引用符""。どんな助けでもいただければ幸いです!

3
Itai Ganot

二重引用符を使用する必要があります(" ")一重引用符の代わりに(')。 Shell、Perl、およびその他の言語と同様に、Puppetの単一引用符はリテラル文字列を示し、変数の補間と円記号の解釈を禁止します。

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

文字列内の二重引用符をエスケープする必要があることに注意してください。

5
larsks