/ Etc / default / altında kukla ile devre dışı bırakılan hizmetler düzeltildi mi?


13

(Teorik olarak) kurulum üzerine başlatmak için npcd almak için kukla kullanıyorum, ancak Ubuntu, bu hizmet / etc / default / npcd of RUN = "no" varsayılan ayar ile geliyor:

 $ 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"

Bu kukla yapılandırma bloğunun şeylerle ilgileneceğini düşünürdüm:

    service { "npcd":
       enable   => true,
       ensure   => "running",
       require  => Package["pnp4nagios"],
    }   

Ama ne yazık ki, ve / etc / default'ta dosyayı yeniden yazmaktan dolayı ne yapacağımdan emin değilim. Görmediğim hizmeti etkinleştirmenin basit bir yolu var mı?

Kayıt için Ubuntu 12.04.2 ve kukla sürüm 3.1.0 kullanıyorum.


Neden sadece /etc/default/npcdbir filekaynakla yeniden yazmıyorsunuz ? fileBağlıdır packageve servicebağlı file. Ben her zaman yoluyla sedveya düzenleme augeasvarsa ben dosyaları düzenleme temkinli .
larsks

Yanıtlar:


12

Bu dosyayı güncellemek ve ardından hizmeti yeniden başlatmak tek yoldur. Yeni bir dosya gönderebilir ve daha sonra hizmeti yapabilirsiniz Gereksinim; bu şekilde içerik güncellendiğinde servis düzgün şekilde başlayacaktır.

Dosyayı tamamen değiştirmek istemiyorsanız, varsayılan dosyadaki tek satırı değiştirmek için Kukla augeas aracını kullanabilirsiniz.

Debian ve türevlerinde, / etc / default'ta etkinleştirilmedikçe paket yüklendikten sonra otomatik olarak başlatılmayan birkaç hizmet vardır. Biraz sinir bozucu.

Düzenleme: FYI init betiği aslında o dosyadan değerleri okuyor (sadece genellikle kaynak).


1
İlginç. Hata bildirmek için bir fikrim var. "Enable" değerini "true" olarak ayarlarsanız, aslında komut dosyasını etkinleştirmesi mantıklıdır (çeşitli semboliklere ek olarak seviyeleri çalıştırır).
Matt Simmons

Ben kukla bir hizmet "varsayılanlar" dosya güncellenmiş gerekir böylece böylece pişmiş değil bilmek bilmek kolay bir yolu olduğunu düşünüyorum; dağıtımda hata vermek daha kolay olabilir. Yine de herhangi bir çekiş alacağınızdan şüpheliyim :-)
Luke

bir hizmet kaynağı olan "defaultulted_service" adında tanımlanmış bir tür ve ayrıca gerekirse sed kullanarak veya yerinde augeas kullanan bir dosya kaynağı kullanarak dosyayı güncelleyen bir exec kaynağı kullanın.
Sirex

@MattSimmons Bu paketleri yapan insanlar sembolik bağlantıları kullanmalı ve update-rc.dhizmeti etkinleştirmeli / devre dışı bırakmalı , değil /etc/default- hizmetleri yönetmek için standart bir yol değil, bu yüzden kuklanın kontrolü dışında.
Shane Madden

8

Cehennem için 12.04 makinelerimdeki standart artalanlardan birkaçını kontrol ettim. Dosyayı bu noktada yönetmeniz gerekiyor, bu noktada zaman içinde bir yol yok.

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

kukla

# Start puppet on boot?
START=yes

mdadm

# 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

6

Bunu yapmak için uygun yollardan birinin kukla ile augeas aracı kullanmak olduğunu düşünüyorum, örneğin

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

ayrıntılar için kılavuza bakınız


0

Dosyayı değiştirmek için sed kullanıyorum. Augeas aşırıya kaçmış gibi görünüyor.

sed -i /etc/default/puppet -e 's/START=no/START=yes/'

Fikir buradan alınır:

http://www.codelord.net/2010/12/19/using-puppet-to-automatically-configure-new-ec2-instances/

Yani, senin durumunda

sed -i /etc/default/npcd -e 's/RUN="no"/RUN="yes"/'

1
augeas'ın bir aşırı silah olduğunu düşünüyorsanız, kukla da bir aşırı silah değil mi? :) Çözümünüz de iyi, ancak dosyayı ve gerekli satırı olduğunu varsayalım, ya orada değilse? size hiçbir şey söylemeden başarısız olur. Augeas'ın kukla kullanıyorsanız yüklemeye değer o kadar sağlam, kullanışlı ve maksatlı olduğuna inanıyorum
DukeLion

Örneğim bulut init aracılığıyla önyükleme kuklasından oldu. Augeas baktım ve hemen mümkünse kaçınmaya karar verdi. Şimdiye kadar augeas'a ihtiyaç duymadım ya da kukla dışında başka bir hizmeti önyüklemem gerekmedi = evet.
dmourati

Bakış açını gerçekten merak ediyorum. Ne demek istediğini görebiliyorum, ama augeas ve kukla birleşik yönetim için soyut üst düzey arayüz sağlama ideolojisini kullanmıyor mu? Eğer augeas'ı sevmiyorsan, kukladan nasıl hoşlanıyorsun? O zaman neden mümkün değil?
DukeLion

Daha iyi bir yaklaşım, apache conf.d, sysctl.d, sudoers.d, vb. Gibi saplama veya parça konfigürasyon dosyalarını düzenlemek olduğunu düşünüyorum. .D dizinleri olan parçalanmış yapılandırma dosyalarının bulunmadığı en basit durumda sed / perl / her neyse kullanın. Böylece augealara gerek kalmaz.
dmourati

0

Bunu augeasKukla türüyle yapmak bir yoldur (@DukeLion tarafından önerildiği gibi).

Başka bir yol da augeasprovidersmodülüshellvar sağlayıcıyla birlikte kullanmaktır :

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

Augeas Ruby firması tarafından temiz bir şekilde kullanılacağı için bu daha iyi. Ayrıca teklif ve otomatik olarak yorum yönetir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.