꼭두각시로 / etc / default /에서 비활성화 된 서비스를 수정 하시겠습니까?


13

설치시 npcd를 시작하기 위해 꼭두각시를 사용하고 있지만 우분투에서는 해당 서비스가 RUN = "no"의 / etc / default / npcd에 기본 설정으로 설치됩니다.

 $ 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을 사용하고 있습니다.


왜 그냥 다시 쓰지 /etc/default/npcdfile자원? 는 file온 의존 package하고는 service에 따라 달라집니다 file. 나는 파일을 통해 sed또는 augeas피할 수 있다면 항상 파일을 편집하는 것을 싫어 합니다.
larsks

답변:


12

해당 파일을 업데이트 한 다음 서비스를 다시 시작하는 것이 유일한 방법입니다. 새 파일을 푸시 한 다음 서비스를 요구할 수 있습니다. 이렇게하면 컨텐츠가 업데이트 될 때 서비스가 올바르게 시작됩니다.

파일을 완전히 바꾸지 않으려면 Puppet augeas 도구를 사용하여 기본 파일의 한 줄만 수정하면됩니다.

데비안과 그 파생물에는 / etc / default에서 활성화되어 있지 않으면 패키지가 설치된 후 자동으로 시작되지 않는 몇 가지 서비스가 있습니다. 성가신 종류.

편집 : 참고로 init 스크립트는 실제로 해당 파일에서 값을 읽습니다 (일반적으로 소싱).


1
흥미 롭군 버그를 신고 할 마음이 있습니다. "enable"을 "true"로 설정하면 실제로 스크립트를 사용하도록 설정하는 것만 가능합니다 (다양한 심볼릭 링크와 함께 실행 레벨).
매트 시몬스

Puppet이 서비스에 "defaults"파일을 업데이트해야하는지 여부를 알 수있는 쉬운 방법이 없다고 생각합니다. 배포판에 버그를 제출하는 것이 더 쉬울 수 있습니다. 그래도 당신이 어떤 견인력을 얻게 될지 의심합니다 :-)
Luke

서비스 자원과 필요에 따라 sed를 사용하여 파일을 업데이트하는 exec 자원 또는 augeas를 사용하는 파일 자원과 같은 "defaulted_service"와 같은 정의 된 유형을 사용하십시오.
Sirex

@MattSimmons이 패키지를 만드는 사람들은 심볼릭 링크를 사용하고 update-rc.d서비스를 활성화 / 비활성화해야합니다. 서비스 /etc/default를 관리하는 표준 방법이 아니므로 꼭두각시가 통제 할 수 없습니다.
Shane Madden

8

필자는 12.04 시스템에서 몇 가지 표준 데몬을 확인했습니다. 이 시점에서 파일을 관리 할 필요가 없습니다.

mp 거리다

# 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

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

6

가능한 방법 중 하나는 꼭두각시와 함께 augeas 도구를 사용하는 것입니다.

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

자세한 내용 은 설명서 를 참조하십시오


0

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

1
당신은 augeas가 과잉이라고 생각한다면, 꼭두각시도 과잉이 아닌가? :) 솔루션도 괜찮지 만 파일이 있고 파일이 필요하다고 가정하면 파일이 없으면 어떻게됩니까? 아무 말도하지 않고 실패 할 것입니다. 꼭두각시를 사용하는 경우 augeas가 매우 강력하고 편리하며 용도가 충분하다고 생각합니다.
DukeLion

내 예는 cloud-init를 통한 부트 스트랩 퍼펫입니다. 나는 augeas를 보았고 가능한 한 즉시 그것을 피하기로 결정했습니다. 지금까지 나는 augeas를 필요로하지 않았고 꼭두각시 이외의 다른 서비스를 시작하여 예를 들어야했습니다.
dmourati

당신의 견해가 궁금합니다. 요점을 알 수 있지만, augeas와 puppet은 통합 관리를위한 추상적 인 최상위 인터페이스를 제공한다는 동일한 이데올로기를 사용하지 않습니까? 당신이 오제 아를 좋아하지 않는다면 어떻게 꼭두각시처럼 되었습니까? 그렇다면 왜 안되나요?
DukeLion

더 나은 접근 방식은 아파치 conf.d, sysctl.d, sudoers.d 등과 같은 스텁 또는 프래그먼트 구성 파일을 편집하는 것입니다. 다른 구성 파일을 통해 조각을 시도하는 것은 나에게 호소력이 없습니다. .d 디렉토리를 가진 조각난 구성 파일이 존재하지 않는 가장 간단한 경우에는 sed / perl / what을 사용하십시오. 따라서, augeas가 필요하지 않습니다.
dmourati

0

augeasPuppet 의 유형으로 이것을하는 것은 한 가지 방법입니다 (@DukeLion에서 제안한대로).

또 다른 방법은 공급자 와 함께 augeasproviders모듈 을 사용하는 것입니다 shellvar.

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

Ruby 공급자가 Augeas를 깨끗하게 사용하기 때문에 더 좋습니다. 또한 인용 및 주석을 자동으로 관리합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.