단일 퍼펫 모듈을 적용 할 때 경로를 설정하는 방법은 무엇입니까?


12

다음과 같은 단일 모듈을 실행하려고합니다.

puppet apply --verbose --modulepath=moduleshere --noop -e 'include myclass'

그러나 경로가 설정되지 않았 음을 나타내는 이러한 종류의 오류가 발생합니다.

Parameter unless failed: '[ -e "${logfile}" ]' is not qualified and no path was specified. Please qualify the command or specify a path.

이러한 모든 위치에 경로를 명시 적으로 지정하고 싶지 않으며 전체 꼭두각시 실행의 일부로 실행할 때 제대로 작동합니다. 단일 모듈을 실행할 때 경로를 어떻게 지정할 수 있습니까?


1
적절한 답변을 받아 주시겠습니까?
kenorb

답변:


15

Exec자원 의 명령은 정규화되어야하거나 (즉, /usr/bin/test대신 test) path해당 Exec자원 의 속성을 설정해야합니다.

Puppet 매니페스트를 수정할 수있는 경우 path모든 Exec리소스 의 기본 속성을 다음과 같이 간단히 정의 할 수 있습니다 /bin.

Exec { path => "/bin" }

더러운 해결 방법으로 명령 줄에서 path모든 Exec리소스에 대한 기본값 을 설정할 수도 있습니다 .

$ puppet apply --verbose -e 'Exec { path => "/bin" }' your_manifest.pp

설명서 포인터 :


2

그 .. 전체 실행의 일부로 작동해서는 안됩니다. unless명령 에서 실행 파일의 전체 경로가 필요합니다 . 어쩌면 전체 실행의 일부인 전역 파일에 경로가 설정되어 있습니까?

unless => '/usr/bin/[ -e "${logfile}" ]'대신 사용해보십시오 .


1

기본 경로가 전역 범위 매니페스트에 설정되어 있다고 Shane에 동의합니다. 같은 작업을 수행 할 수는 있지만 인수로 전달할 수 없으므로 stdin을 사용하십시오.

$ puppet apply -v --modulepath=moduleshere --noop <<EOF
Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin" }
include myclass
EOF

또는 Exec 및 include 행을 넣은 다음를 example.pp사용하십시오 puppet apply -v ... example.pp.


1

정규화 된 경로를 사용해야합니다.

예를 들어 :

exec { "sample":
  command => "/usr/bin/test",
}

또는:

exec { "sample":
  path    => ['/usr/bin', '/usr/sbin', '/bin'],
  command => "test",
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.