web-dev-qa-db-ja.com

パペットで/ etc / profileに行を追加しますか?

パペットを使用して、現在のJDKとTomcatをインストールします。

package {
    [ "openjdk-6-jdk", "openjdk-6-doc", "openjdk-6-jre",
      "Tomcat6", "Tomcat6-admin", "Tomcat6-common", "Tomcat6-docs", 
      "Tomcat6-user" ]:
    ensure => present,
}

追加したい

Java_HOME="/usr/lib/Java"
export Java_HOME

/etc/profile、これを邪魔にならないようにするだけです。私はまだドキュメントで簡単な答えを見つけていません。これを行うための推奨される方法はありますか?

一般に、このファイルをそこに配置するか、そのファイルを変更するように人形に指示するにはどうすればよいですか?試してみて サーバー設定のログ を維持するためだけに、(スタンドアロンモードで)単一ノードにパペットを使用しています。

16
miku

/etc/profile.d/というサフィックスが付いたファイルを.shに追加します。これは、Red HatとDebianおよびその派生物の/ etc/profileの一部として提供され、他のディストリビューションでは言うことができません。一般的に言って、可能であれば、分散ファイルを置き換えるよりもスニペットを追加する方が安全です。

したがって、人形では、次のようになります。

file { "/etc/profile.d/set_Java_home.sh":
    ensure => present,
    source => ...[whatever's appropriate for your setup]...,
    ...
}

これはあなたが探しているものですか、それとももっと詳細が必要ですか?

26
mark

マークのソリューションは、全員のプロファイルにコンテンツを追加するのに最適ですが、ファイルにいくつかの行があることを確認する必要がある場合、Puppet Labsには stdlib という素晴らしいモジュールがあり、必要なことを行うfile_lineが含まれています。以前は、execタイプでechoとgrepを使用してこれを行っていましたが、file_lineの方がはるかに簡単でクリーンです。

そのためのヘルプは次のとおりです。

Ensures that a given line is contained within a file. The implementation
matches the full line, including whitespace at the beginning and end. If
the line is not contained in the given file, Puppet will add the line to
ensure the desired state. Multiple resources may be declared to manage
multiple lines in the same file.

Example:

file_line { 'Sudo_rule':
   path => '/etc/sudoers',
   line => '%Sudo ALL=(ALL) ALL',
}
file_line { 'Sudo_rule_nopw':
   path => '/etc/sudoers',
   line => '%sudonopw ALL=(ALL) NOPASSWD: ALL',
}

In this example, Puppet will ensure both of the specified lines are
contained in the file /etc/sudoers.
42
Mark McKinstry