user1670773
user1670773

Reputation:

Puppet: how to add a line to an existing file

I am trying to add a line to an existing file /etc/fuse.conf. I tried this

added a folder two folders under modules directory

sudo mkdir /etc/puppet/modules/test
sudo mkdir /etc/puppet/modules/test/manifests

Then created a test.pp file and added following lines

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',
}

After that I ran this command

puppet apply /etc/puppet/modules/test/manifests/test.pp

Then I opened this file /etc/fuse.conf and there was no change in the file. The line was not added to the file. I don't understand what I am missing here. How can I do this?

Upvotes: 2

Views: 10766

Answers (3)

Robert Lupinek
Robert Lupinek

Reputation: 66

Interesting. I ran the same test you did without an issue, and as long as you have stdlib installed in your environment you should be fine.

https://forge.puppet.com/puppetlabs/stdlib

The results of running the same steps you outlined were successful for me:

[root@foreman-staging tmp]# puppet apply /etc/puppet/modules/test/manifests/test.pp
Notice: Compiled catalog for foreman-staging.kapsch.local in environment production in 0.18 seconds
Notice: /Stage[main]/Main/File[/etc/fuse.conf]/ensure: created
Notice: /Stage[main]/Main/File_line[Append a line to /etc/fuse.conf]/ensure: created
Notice: Finished catalog run in 0.24 seconds

What did your puppet run output?

Upvotes: 2

Robo
Robo

Reputation: 1032

There are a few ways to handle this. If it's ini file you can use ini_setting. If it's supported by augeas you can use that. Otherwise try specifying the after parameter to file_line

Upvotes: 0

Quintiliano
Quintiliano

Reputation: 93

You should use templates (ERB) to handle file configuration. Its easier and cleaner.

Check the puppet docs for it in : https://docs.puppetlabs.com/puppet/latest/reference/lang_template.html

There are other options though. e.g. Augeas which is an API for file configuration and integrate very well with Puppet. http://augeas.net/index.html

[]'s

Upvotes: 0

Related Questions