Я использую марионетку для установки текущего 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
, просто чтобы убрать это с дороги. Я пока не нашел однозначного ответа в документации. Есть рекомендуемый способ сделать это?
В общем, как я могу сказать марионетке, что нужно поместить туда этот файл или изменить этот файл? Я использую марионетку для одного узла (в автономном режиме), просто чтобы попробовать и сохранить журнал настройки сервера.
Решение mark лучше всего подходит для добавления материала в профиль каждого, но если вам когда-нибудь понадобится убедиться, что некоторые строки находятся в файле, в Puppet Labs есть отличный модуль под названием stdlib который включает file_line, который сделает то, что вам нужно. Раньше для этого я использовал echo и grep в типе exec, но 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.
Добавить файл в /etc/profile.d/
с суффиксом .sh
. Он будет получен как часть / etc / profile в Red Hat, Debian и производных, чего нельзя сказать о других дистрибутивах. Вообще говоря, если это вообще возможно, лучше добавлять фрагменты, чем заменять распространяемые файлы, поскольку это более безопасно в будущем.
Итак, в марионетке подойдет следующее:
file { "/etc/profile.d/set_java_home.sh":
ensure => present,
source => ...[whatever's appropriate for your setup]...,
...
}
Это то, что вы ищете или вам нужно больше деталей?