Назад | Перейти на главную страницу

Puppet: как добавить строку в существующий файл

Редактировать: Пример ниже верен и отлично работает. Но у меня почему-то в первый раз не получилось а потом у меня получилось 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 и в файле не было изменений. Строка не добавлена ​​в файл. Я не понимаю, что мне здесь не хватает. Как я могу это сделать? Я учусь марионетке. Так что это только для обучения.

Для file_line должна быть установлена ​​стандартная библиотека Puppet Labs.

Видеть https://puppet.com/blog/module-of-week-puppetlabs-stdlib-puppet-labs-standard-library Чтобы получить больше информации.

Вы можете попробовать это:

exec {'exec_name': command => 'bash -c "echo foo_bar" >> /path/to/file', path => '/bin', }

Пробовал большинство вариантов, и все они меня разочаровали.

Попробуй это

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