Я использую puppet (теоретически), чтобы npcd запускался после установки, однако в Ubuntu эта служба устанавливается с установкой по умолчанию в / etc / default / npcd для RUN = "no":
$ cat /etc/default/npcd
# Default settings for the NPCD init script.
# Should NPCD be started? ("yes" to enable)
RUN="no"
# Additional options that are passed to the daemon.
DAEMON_OPTS="-d -f /etc/pnp4nagios/npcd.cfg"
Я думаю, что этот блок конфигурации кукол позаботится о вещах:
service { "npcd":
enable => true,
ensure => "running",
require => Package["pnp4nagios"],
}
Но, увы, это не так, и, если не считать переписывания файла в / etc / default, я не уверен, что делать. Есть ли простой способ включить службу, которую я не вижу?
Для записи я использую Ubuntu 12.04.2 и версию Puppet 3.1.0.
/etc/default/npcd
сfile
ресурсом?file
Зависит отpackage
, иservice
зависит отfile
. Я всегда опасаюсь редактировать файлы с помощьюsed
или,augeas
если я могу избежать этого.Ответы:
Обновление этого файла и перезапуск службы - единственный способ. Вы можете нажать новый файл, а затем сделать сервис Требовать это; таким образом, при обновлении содержимого служба будет запущена правильно.
Если вы не хотите полностью заменять файл, вы можете использовать инструмент Puppet augeas, чтобы просто изменить одну строку в файле значений по умолчанию.
В Debian и его производных есть несколько сервисов, которые не запускаются автоматически после установки пакета, если он не включен в / etc / default. Вид раздражает.
Редактировать: FYI скрипт инициализации на самом деле читает значения из этого файла (просто получая его обычно).
источник
update-rc.d
для включения / отключения службы, а не/etc/default
- это не стандартный способ управления службами, поэтому он находится вне контроля марионетки.Черт возьми, я проверил несколько стандартных демонов на моих машинах 12.04. Вы должны управлять файлом, но никак не обойти его в данный момент.
SNMPD
collectd
марионетка
mdadm
HAProxy
источник
Я думаю, что один из возможных способов сделать это - использовать Augeas Tool с Puppet, например
обратитесь к руководству для деталей
источник
Я использую sed, чтобы изменить файл. Augeas кажется излишним.
Идея взята отсюда:
http://www.codelord.net/2010/12/19/using-puppet-to-automatically-configure-new-ec2-instances/
Итак, в вашем случае
источник
Делать это с
augeas
типом в Puppet можно только одним способом (как предлагает @DukeLion).Другой способ - использовать
augeasproviders
модуль вместе сshellvar
провайдером:Это лучше, потому что Augeas будет чисто использоваться поставщиком Ruby. Он также будет управлять цитированием и комментариями автоматически.
источник