클래스에서 내가 좋아하는 것이 작업을 수행합니다 : 불행하게도인형 오류 : 중복 정의
Duplicate definition: Service[ServiceName] is already defined in file /puppet/mycsass.pp at line 2; cannot redefine at /puppet/myclass.pp:9
클래스에서 내가 좋아하는 것이 작업을 수행합니다 : 불행하게도인형 오류 : 중복 정의
Duplicate definition: Service[ServiceName] is already defined in file /puppet/mycsass.pp at line 2; cannot redefine at /puppet/myclass.pp:9
:
class MyClass{
service{"ServiceName-start":
name => "ServiceName",
ensure => "stopped",
}
package{"PackageName":
ensure => "installed",
require => Service["ServiceName-Start"],
}
service{"ServiceName-Stop":
name => "ServiceName",
ensure => "running",
require => Package["PackageName"]
}
}
나는이 오류가 발생했습니다 : 여기
stop a service
reinstall a package
start the previous service again
내 클래스 그것은 당신이 원하는만큼 간단하지 않은 것 같습니다.
Here's a brief explanation of the problem in the Puppet User's group.
이 견적 금액 포스트 업 :
class MyClass {
exec { "ServiceName-Stop":
command => "/bin/sh -c '/sbin/service ServiceName stop",
}
package{"PackageName":
ensure => "installed",
require => Service["ServiceName-Stop"],
}
service{"ServiceName-Start":
name => "ServiceName",
ensure => "running",
require => Package["PackageName"]
}
}
이게 아무것도 고칠 수는 없지만 서비스의 이름이 거꾸로 있다고 생각합니다. 'ServiceName-start'는 서비스를 중지하고 'ServiceName-Stop'은 서비스를 시작합니다. 내 예제에서는 예제의 역순으로 레이블을 붙입니다. 내가 틀렸다면, 되돌릴 수 없다. :) – clang1234
하는 것이 될 수있다
Puppet is not a script engine, and its language is not a scripting language. You can write scripts in Puppet, but it is cumbersome. Puppet is all about achieving and maintaining particular states of system resources, intentionally de-emphasizing the mechanism for getting from here to there. Thus, "how do I make Puppet perform ?" is rarely a useful question.
이 게시물의 저자는 또한 내가 당신의 예를 들어 적응 한 다른 (하지만 덜 매력적인 솔루션)를 제공 여기에 가상 리소스가 유용 할 지 모르지만 ... 현재 사용중인 두 개의 .pp 파일의 현재 구조는 다음과 같습니다.
/etc/puppet/modules/testmodule/manifests/init.pp
/etc/puppet/modules/testmodule/manifests/test.pp
init.pp는 다음과 같습니다. 나는 서비스를 위해 mysqld를 사용했다.
class testmodule {
@service { "mysqld" :
ensure => stopped,
}
}
test.pp는 다음과 같습니다. 당신이 당신의 site.pp에서
class testmodule::test inherits testmodule {
realize(Service["mysqld"])
package { "mysql" :
ensure => installed,
notify => Service["mysqld"],
}
Service["mysqld"] {
ensure => running,
}
realize(Service["mysqld"])
}
을 수행 할 수 있습니다이 도움이
node 'my_nodename.com' {
include testmodule::test
}
희망 ....
나는 인형이 무엇인지 모른다; 그러나 'MyClass'의 구조를 보면, 같은'name => "ServiceName"을 가진 "ServiceName-start"와 "ServiceName-Stop"서비스로 인한 오류입니까? –
예, 같은 서비스를 먼저 중지하고 나중에 시작 하시겠습니까? – icn
또한 [require => Service [ "ServiceNameStart"],'require => Service [ "ServiceName-start"],'? –