꼭두각시 : 구성 파일을 수정 한 후 서비스를 강제로 다시 시작 munin 또는 apache 구성이 있다고 가정 해

마스터 저장소에서 관리 서버 중 하나로 퍼펫을 통해 새 버전의 구성 파일을 다운로드 한 경우 관련 서비스가 다시 시작되도록하려면 어떻게해야합니까?

일반적인 시나리오-새로운 munin 또는 apache 구성이 있다고 가정 해 봅시다. 꼭두각시 클라이언트가 발견하고 로컬 파일을 덮어 씁니다 … 그리고 …-서비스가 다시 시작 / 다시로드되도록하는 방법은 무엇입니까?

고마워요!



답변

통지하는 대안은 subscribe입니다.

file { "/etc/sshd_config":
    source => "....",
}

service { sshd:
    ensure => running,
    subscribe => File["/etc/sshd_config"],
}

차이점은 관계가 다른 쪽 끝에서 설명된다는 것입니다. 예를 들어, apache가 /etc/apache/httpd.conf를 구독하도록 만들 수 있지만, 아파치 클래스가 가지고있는 모든 호스트에 대해 아는 것은 아니므로 vhost 파일이 아파치를 알릴 수 있습니다.

유사한 이중 종단 상황이 요구 및 이전에 적용됩니다. 특정 상황에서 더 의미가있는 문제 일뿐입니다.

Chad가 언급했듯이 꼭두각시가 지속적으로 서비스를 시작하려고하면 프로세스 매개 변수에 적용 할 정규 표현식 인 패턴 매개 변수를 추가해야합니다. 기본적으로 퍼펫은 서비스를 중지하고 다시 시작합니다. “hasrestart => true”를 추가하면 “restart”매개 변수에 지정된 명령을 사용하여 서비스를 다시 시작합니다.


답변

내가 찾은 것 같습니다.

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

우리는 그것이 어떻게 작동하는지 볼 것입니다. 어쨌든 주제에 대한 당신의 생각은 환영합니다.


답변

(이것은 매우 오래된 질문이라는 것을 알고 있지만 (내 의견으로는) 훨씬 쉬운 방법으로 내 2 센트에 넣을 것이라고 생각했습니다)

화살표 표기법도 자유롭게 사용하십시오.

file { "/etc/sshd_config":
  source => "....",
} ~>
service { sshd:
  ensure => running
}

또는

File['/etc/sshd_config'] ~> Service['sshd']


답변

이것은 Solaris 10에서 작동합니다 🙂

class sun_cron_root {
    file { "/var/spool/cron/crontabs/root" :
            source => "puppet:///files/cron/sun/sun_cron_root"
            }

    service {
            "cron":
            provider => "smf",
            ensure => running,
            enable => true,
            hasrestart => true,
            subscribe => File["/var/spool/cron/crontabs/root"]
            }

}


답변

이에 상응하는 여러 표기법이 있습니다.

알림 :

file { '/etc/sshd_config':
    notify => Service[sshd],
}

service { sshd:
    ensure => running
}

구독 :

file { '/etc/sshd_config':
   ...
}

service { sshd:
    ensure => running,
    subscribe => File['/etc/sshd_config'],
}

화살표 표기법 :

File['/etc/sshd_config'] ~> Service['sshd']

연쇄 선언

file { '/etc/sshd_config':
   ...
}
~> service { sshd:
    ensure => running,
}

reload대신에 트리거하려면 restart서비스 선언을 조정하십시오.

service { sshd:
    ensure => running,
    restart => 'pkill -HUP sshd', # if service support such reload
}


답변