用p向/ etc / profile添加行?


16

我使用puppet安装当前的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,只是为了避免这种情况。我还没有在文档中找到简单的答案。有推荐的方法吗?

通常,我如何告诉人偶将该文件放置在此处或修改该文件?我将puppet用于单个节点(处于独立模式)只是为了对其进行尝试并保留服务器设置的日志


1
如果您要使用Puppet,请查看Example42中的预构建模块。它们并非总是如您所愿地工作,但是它们是连贯且稳定的。github.com/example42/puppet-modules
kashani 2011年

Answers:


26

将文件添加到/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]...,
    ...
}

这是您要找的还是您需要更多详细信息?


1
这也适用于OpenSUSE和Gentoo。
卡米尔·基西尔

1
谢谢,太好了。它几乎可以正常工作,只需要找到一种相对于.ppas源引用文件的适当方法。
miku

1
假设Puppet 0.25或更好的源=> puppet:/// $ modulename / $ file,实际系统路径为$ modulename / files / $ file
kashani 2011年

2
如果使用puppet:/// $ modulename / files / $ filename表示法,则IIRC 2.6.5和更高版本将发出弃用警告。它应该看起来像puppet://// modules / $ modulename / files / $ filename
ztron 2011年

42

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.

2
确保在客户端上启用了pluginsync,否则这似乎会失败。
gak 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.