Adicionando linhas ao / etc / profile com o fantoche?

15

Eu uso o fantoche para instalar um JDK e um tomcat atuais.

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

Agora eu gostaria de adicionar

JAVA_HOME="/usr/lib/java"
export JAVA_HOME

para /etc/profile , apenas para tirar isso do caminho. Ainda não encontrei uma resposta direta nos documentos. Existe uma maneira recomendada de fazer isso?

Em geral, como eu digo ao fantoche para colocar esse arquivo lá ou modificar esse arquivo? Estou usando o fantoche para um único nó (no modo autônomo) apenas para testá-lo e manter um log da configuração do servidor .

    
por miku 22.02.2011 / 16:44

2 respostas

26

Adicione um arquivo a /etc/profile.d/ com o sufixo .sh . Ele será originado como parte do / etc / profile no Red Hat, Debian e derivados, não pode ser dito em outras distribuições. De um modo geral, se for possível, é melhor adicionar snippets em vez de substituir arquivos distribuídos, pois ele tende a ser mais seguro no futuro.

Então, no fantoche, o seguinte faria:

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

É isso que você está procurando ou precisa de mais detalhes?

    
por 22.02.2011 / 16:55
41
A solução de Mark é a melhor para adicionar coisas ao perfil de todos, mas se você precisar garantir que algumas linhas estejam em um arquivo, o Puppet Labs tem um ótimo módulo chamado stdlib que inclui file_line que fará o que você precisa. Anteriormente, eu usava echo e grep no tipo exec para fazer isso, mas file_line é muito mais fácil e mais limpo.

Aqui está a ajuda para isso:

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.
    
por 21.03.2012 / 23:18