![Puppet:如何向现有文件添加一行](https://linux22.com/image/678966/Puppet%EF%BC%9A%E5%A6%82%E4%BD%95%E5%90%91%E7%8E%B0%E6%9C%89%E6%96%87%E4%BB%B6%E6%B7%BB%E5%8A%A0%E4%B8%80%E8%A1%8C.png)
编辑: 下面的例子是正确的,并且运行完美。但由于某种原因,我第一次使用时它不起作用,后来我尝试了一下vagrant provision
,然后一切都运行完美。
我正在尝试向现有文件 /etc/fuse.conf 添加一行。我试过这个
在模块目录下添加了一个文件夹和两个文件夹
sudo mkdir /etc/puppet/modules/test
sudo mkdir /etc/puppet/modules/test/manifests
然后创建一个 test.pp 文件并添加以下几行
sudo vim /etc/puppet/modules/test/manifests/test.pp
file { '/etc/fuse.conf':
ensure => present,
}->
file_line { 'Append a line to /etc/fuse.conf':
path => '/etc/fuse.conf',
line => 'Want to add this line as a test',
}
之后我运行了这个命令
puppet apply /etc/puppet/modules/test/manifests/test.pp
然后我打开了这个文件/etc/fuse.conf
,文件没有任何变化。该行没有添加到文件中。我不明白我在这里遗漏了什么。我该怎么办?我正在学习 puppet。所以这只是为了学习目的。
答案1
必须file_line
安装 Puppet Labs 标准库。
看https://puppet.com/blog/module-of-week-puppetlabs-stdlib-puppet-labs-standard-library了解更多信息。
答案2
尝试这个
file { '/etc/fuse.conf':
ensure => present,
}->
if "test `grep -q 'Want to add this line as a test' /etc/fuse.conf | wc -l` -eq 0" {
exec { 'echo "Want to add this line as a test" >> /etc/fuse.conf':
}
}
答案3
您可以尝试以下操作:
exec {'exec_name': command => 'bash -c "echo foo_bar" >> /path/to/file', path => '/bin', }
尝试了大多数选项但都令我失望。