web-dev-qa-db-fra.com

Ajout de lignes à / etc / profil avec la marionnette?

J'utilise la marionnette pour installer un JDK et Tomcat actuels.

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

Maintenant je voudrais ajouter

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

à /etc/profile, juste pour en sortir. Je n'ai pas trouvé de réponse simple dans les docs, encore. Y a-t-il une façon recommandée de faire cela?

En général, comment puis-je dire à Puppet de placer ce fichier là-bas ou de modifier ce fichier? J'utilise la marionnette pour un seul noeud (en mode autonome) pour l'essayer et pour continuer n journal de la configuration du serveur .

16
miku

Ajouter un fichier à /etc/profile.d/ avec le suffixe .sh. Il sera acheté dans le cadre de/etc/profilé au chapeau rouge et à Debian et à des dérivés, ne peut pas dire sur d'autres distributions. D'une manière générale, si possible, il vaut mieux ajouter des extraits plutôt que de remplacer les fichiers distribués car il a tendance à être plus sûr.

Donc, dans la marionnette, les suivants feraient:

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

C'est ce que vous cherchez ou avez-vous besoin de plus en détail?

26
mark

la solution de Mark est la meilleure pour ajouter des trucs au profil de tous, mais si vous avez besoin de vous assurer que certaines lignes sont dans un fichier, Puppet Labs possède un excellent module appelé STDLIB qui inclut File_Line qui fera ce dont vous avez besoin. . Auparavant, j'ai utilisé Echo et Grep dans le type Exec pour le faire, mais File_Line est tellement plus facile et plus propre.

Voici l'aide pour cela:

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