web-dev-qa-db-ja.com

/ etc / default /で無効にされているサービスを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とパペットバージョン3.1.0を使用しています。

13
Matt Simmons

そのファイルを更新してからサービスを再起動するのが唯一の方法です。新しいファイルをプッシュして、サービスにそれを要求させることができます。そうすれば、コンテンツが更新されたときにサービスが適切に開始されます。

ファイルを完全に置き換えたくない場合は、Puppet augeasツールを使用して、デフォルトファイルの1行を変更するだけです。

Debianとその派生物には、/ etc/defaultで有効になっていない限り、パッケージのインストール後に自動起動しないサービスがいくつかあります。ちょっと迷惑です。

編集:参考までに、initスクリプトは実際にそのファイルから値を読み取っています(通常はそれをソースとしています)。

12
Luke

その地獄のために、私は自分の12.04マシンでいくつかの標準デーモンをチェックしました。この時点でファイルを回避する方法はありません。

snmpd

# snmpd control (yes means start daemon).
SNMPDRUN=yes

collectd

# 0: start collectd on boot, 1: do not start collectd on boot
# default: 0
DISABLE=0

傀儡

# Start puppet on boot?
START=yes

mdadm

# START_DAEMON:
#   should mdadm start the MD monitoring daemon during boot?
START_DAEMON=true

ハプロキシ

# Set ENABLED to 1 if you want the init script to start haproxy.
ENABLED=1
8
kashani

それを行うための実行可能な方法の1つは、人形でaugeasツールを使用することです。

augeas { "npcd_default":
  changes => [
    "set /files/etc/default/npcd/Run yes",
  ],
}

詳細は manual を参照してください

6
DukeLion

Sedを使用してファイルを変更します。 Augeasはやり過ぎのようです。

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"/'
0
dmourati

Puppetでaugeasタイプを使用してこれを行うのは1つの方法です(@DukeLionで提案)。

もう1つの方法は、augeasprovidersプロバイダーで shellvar module を使用することです。

shellvar { 'npcd_default':
  ensure   => present,
  target   => '/etc/default/npcd',
  variable => 'RUN',
  value    => 'yes',
  comment  => 'We want npcd to run',
}

AugeasはRubyプロバイダーによってクリーンに使用されるため、これはより優れています。また、引用とコメントを自動的に管理します。

0
ℝaphink