単一のパペットモジュールを適用するときにパスを設定する方法は?


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
適切な答えを受け入れていただけますか?
ケノーブ

回答:


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を配置し、行を含めて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.