답변:
"자원이 이미 정의되어 있는지 테스트"를 의미 합니까? 리소스 (즉, file {}
등) 를 정의하면 꼭두각시 (Puppet)는 이미 존재하지 않는 경우 설명하는 내용을 생성합니다 ( ensure => present
물론 통과한다고 가정 ).
자원이 카탈로그에 이미 정의되어 있는지 확인하려면 다음을 수행하십시오.
mark-draytons-macbook:~ mark$ cat test.pp
file { "/tmp/foo": ensure => present }
if defined(File["/tmp/foo"]) {
alert("/tmp/foo is defined")
} else {
alert("/tmp/foo is not defined")
}
if defined(File["/tmp/bar"]) {
alert("/tmp/bar is defined")
} else {
alert("/tmp/bar is not defined")
}
mark-draytons-macbook:~ mark$ puppet test.pp
alert: Scope(Class[main]): /tmp/foo is defined
alert: Scope(Class[main]): /tmp/bar is not defined
notice: //File[/tmp/foo]/ensure: created
참고 : defined()
이다 구문 분석 순서에 따라 다릅니다 .
간단히,
file{ "$local_container":
ensure => directory,
replace => false,
}
"$local_container"
파일이 이미 다른 곳에 정의되어 있다면 (예 : 권한 / 소유자를 제어하려는 무언가로) 같은 리소스를 두 번 정의 할 수 없습니다.