Я использую марионетку, чтобы (теоретически) запустить 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 и марионеточную версию 3.1.0.
Единственный способ - обновить этот файл и перезапустить службу. Вы можете отправить новый файл, а затем сделать так, чтобы служба потребовала этого; таким образом, когда содержимое обновлено, служба запустится должным образом.
Если вы не хотите полностью заменять файл, вы можете использовать инструмент Puppet augeas, чтобы просто изменить одну строку в файле по умолчанию.
В Debian и его производных есть несколько сервисов, которые не запускаются автоматически после установки пакета, если он не включен в / etc / default. Вид раздражает.
Изменить: FYI, сценарий инициализации фактически считывает значения из этого файла (обычно это просто источник).
Я проверил несколько стандартных демонов на своих машинах 12.04. Вы должны управлять файлом, ни в коем случае не обойтись в данный момент.
snmpd
# snmpd control (yes means start daemon).
SNMPDRUN=yes
собирать
# 0: start collectd on boot, 1: do not start collectd on boot
# default: 0
DISABLE=0
кукольный
# Start puppet on boot?
START=yes
мдадм
# START_DAEMON:
# should mdadm start the MD monitoring daemon during boot?
START_DAEMON=true
haproxy
# Set ENABLED to 1 if you want the init script to start haproxy.
ENABLED=1
Я думаю, что один из возможных способов сделать это - использовать инструмент augeas с марионеткой, например
augeas { "npcd_default":
changes => [
"set /files/etc/default/npcd/Run yes",
],
}
обратитесь к руководство для подробностей
Я использую sed для изменения файла. Авгий кажется излишним.
sed -i /etc/default/puppet -e 's/START=no/START=yes/'
Идея взята отсюда:
http://www.codelord.net/2010/12/19/using-puppet-to-automatically-configure-new-ec2-instances/
Итак, в вашем случае
sed -i /etc/default/npcd -e 's/RUN="no"/RUN="yes"/'
Делая это с augeas
введите Puppet в одну сторону (как предлагает @DukeLion).
Другой способ - использовать augeasproviders
модуль, с shellvar
провайдер:
shellvar { 'npcd_default':
ensure => present,
target => '/etc/default/npcd',
variable => 'RUN',
value => 'yes',
comment => 'We want npcd to run',
}
Это лучше, потому что Augeas будет чисто использоваться провайдером Ruby. Он также будет автоматически управлять цитированием и комментариями.