次のように、パペットソースパスを引数として取るパペット用の新しい関数を作成しようとしています。
puppet:///modules/foo/some/dir
次に、関数はこのディレクトリを分析する必要があるため、ディレクトリへの絶対パスを特定する必要があります。これは、環境によって異なります。次に例を示します。
/srv/puppetmaster/stable/modules/foo/files/some/dir
これを達成するためにどの関数を使用できますか?
これを行うための内部メソッド/関数があるかどうかはわかりませんが、これを実現する方法がいくつかあるかもしれません。
ENV でパペットの設定を確認します。
スクリプトから system() 呼び出しを行います。パペットはモジュール パスの構成値をダンプできます。
$ puppet master --configprint modulepath
$ puppet agent --configprint modulepath
人形のソースを調べてみると、可能であれば、人形のソースコードを変更する必要があり、醜いという印象を受けます。
だから私の答えは、あなたはおそらく間違った問題を解決しようとしていますか?
ファイルサーバーパスをマスターローカルファイルパスに変換する場合は、通常はクライアントでのみ必要なサーバー上のデータを使用する関数を作成することをお勧めします。なぜあなたはこれをしたいのですか?マスターとクライアントの両方に必要なファイルがありますか?(これはありそうにないようです)そのURLは実際にローカルファイルパスに変換する必要がありますか?