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

Исправление служб, которые были отключены в / etc / default / с помощью марионетки?

Я использую марионетку, чтобы (теоретически) запустить 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. Он также будет автоматически управлять цитированием и комментариями.