パペットからシェルスクリプトを実行するにはどうすればよいですか?


8

私はインストールする必要があるnpmによって行われているcurl http://npmjs.org/install.sh | shと使用に新しいものpuppet、私はこれが行われるべきかについて混乱して少しです。

ターゲットpackage {}を呼び出すエントリを作成することは承知していますが、ソースからexecインストールするnpmので、これでカットされることはありません。

プルするnpmたびにビルドしたくないのは明らかなpuppetので、インストールされているかどうかを確認する必要があるので、exec {}単独で作成するだけでは不十分です。

私に何ができる?

回答:


15

何かのようなもの

exec { "install npm":
    command => "/usr/bin/curl http://npmjs.org/install.sh | sh",
    creates => "/some/directory/somewhere"
}

トリックを行う必要があります。

ただし、インストールプロセスが他の多くの正常な動作に依存し、ファイルシステムのどこにあるかを知っている追跡されていないファイルをドロップするため、これを実行しないことを強くお勧めします(これは、セキュリティの影響について話し始める前です)信頼できない、検証できないコードを自動的に実行する)。OSのネイティブパッケージを作成し、それをローカルリポジトリに配置し、パッケージリソースを使用してインストールする方がはるかに良いでしょう。


4

Wombleがパッケージ化し、ローカルリポジトリからパッケージ管理ツールを介してインストールすることについてWombleが言ったすべてのことを「2番目」にします。プラットフォームによっては、信頼できるサードパーティのリポジトリを使用できる場合もあります。

Wombleの答えに関する1つの小さなヒント:パペットスタイルガイドでは、変数の補間に二重引用符が必要でない限り、一重引用符の使用を推奨しています。Wombleが示すコードには変数がないため、すべての "は 'にする必要があります。

多くのパペットのドキュメントはこの推奨事項を反映するように更新されていないため、公式ドキュメントでも、多くの場所で二重引用符が表示されます。スタイルガイドとパペットリントはどちらも現在推奨されているベストプラクティスを反映しており、ドキュメントは最終的には修正されるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.