2012-06-19 4 views
1

Puppet 클래스로 Varnish를 배치하려면 이동을 위해 Varnish를 중지하고 파일을 배치 한 다음 끝에 Varnish가 시작되도록해야합니다.Puppet에서 동일한 서비스를 두 번 정의하는 방법은 무엇입니까?

내 문제는 간단합니다. 다른 단계에서 서비스를 중지하거나 시작하려면 Puppet 클래스에서 서비스를 두 번 정의 할 수 있습니까?

class varnish::install (

    (...) 

    service { "varnish": 
     ensure => "stopped", 
     require => Package['varnish'], 
     before => Exec['mv-lib-varnish'], 
    } 

    (...) 

    service { "varnish": 
     ensure => "running", 
     require => File["$varnishncsa_file"], 
    } 
} 

내가 Duplicate definition: Service[varnish] (...) 오류를했습니다, 그리고 논리의 ...

퍼핏 클래스에서 서비스를 관리 할 수있는 가장 좋은 방법은 무엇입니까

? 여러 클래스로 나누거나 여러 번 선언하기 위해 서비스의 "이름 바꾸기"옵션이 있습니까?

답변

3

중복 오류를 없애기 위해 다음을 시도해보십시오.하지만 시도하려는 것은 잘못되었습니다. 퍼핏은 시스템을 일정한 상태로 가져옵니다. 따라서 서비스 X를 중지하고, 일을하고, 서비스 X를 시작합니다. 꼭두각시 사용 범위를 벗어나면 인형은 서비스가 의존하는 일부 파일이 수정되면 다시 시작 서비스와 유사합니다.

class varnish::install (

(...) 

service { "varnish-stop": 
    name => "varnish" 
    ensure => "stopped", 
    require => Package['varnish'], 
    before => Exec['mv-lib-varnish'], 
} 

(...) 

service { "varnish-start": 
    name => "varnish" 
    ensure => "running", 
    require => File["$varnishncsa_file"], 
} 
} 
1

"파일 배포"작업 (package/another exec)에 대한 후크 (알림)로 서비스 재시작과 함께 exec를 사용하십시오. 서비스 자체를 실행으로 한 번만 정의하십시오. 일반적으로 보장하기를 원하는 서비스이기 때문입니다. Puppet은 목표 상태를 설명하기위한 것입니다.

관련 문제