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

Марионетка игнорирует часть шаблонного файла

Есть ли способ игнорировать часть шаблонного файла?

У меня есть служба, у которой есть файл конфигурации, и каждый раз, когда служба запускается, она записывает время запуска в файл конфигурации. Это заставляет марионетку обнаруживать изменение, и, поскольку он уведомляет службу, она перезапускает службу. Я не хочу, чтобы марионетка перезапускала службу вскоре после того, как я ее только что запустил.

Так есть ли способ заставить марионетку игнорировать часть шаблонного файла?

Я не думаю, что это возможно, марионетка вычисляет md5 файла для проверки изменений файла. Можно ли записать время начала в другой файл?

Мое решение похоже на решение Zoredache, но немного отличается в том смысле, что вам не нужен интеллектуальный скрипт для сравнения.

Допустим, ваш файл конфигурации /etc/my_application.conf и это выглядит так:

start_time=<some value set by application on start-up>
option1=VALUE
...

В марионетке добавьте файл в files / для вашего файла конфигурации, который выглядит так:

start_time=DummyValue
option1=VALUE
...

Затем используйте манифест, который развертывает файл в альтернативном месте, и, если есть изменения, запускает копию, которая затем запускает службу, например:

file { '/etc/my_application.staging.conf':
  ensure => present,
  source => 'puppet:///modules/my_application/my_application.conf',
  owner  => ...
  notify => Exec['install-my_application.conf'],
}

exec { 'install-my_application.conf':
  refreshonly => true,
  command     => '/bin/cp /etc/my_application.staging.conf /etc/my_application.conf',
  notify      => Service['my_application'],
}

service { 'my_application':
  ...
}

Это позволяет вам перезапускаться при новых изменениях конфигурации, но не буду перезапустите службу, если my_application.conf изменен локально. Это не идеальный решение, потому что оно не избавляет вас от локальных изменений, но, надеюсь, вы сможете управлять ими с разрешениями и четким предупреждением в верхней части файла конфигурации.