Pacotes de fantoches de uma só vez, mas sem um repositório

1

Estou tentando fazer com que bonecos funcionem para algumas VMs, minha intenção é instalar o jdk6 e o tomcat 6 usando o fantoche, mas não posso usar o yum porque as máquinas não estão conectadas à internet, se fosse uma solução simples de uma máquina então eu poderia apenas usar as instalações manuais, mas eu preciso automatizar isso e preciso construir e destruir VMs com a mesma configuração.

Acabei usando o script de alguém para o jdk, é um módulo muito sujo e contém todos os RPMs do arquivo bin do oracle. Coloco-os na pasta de arquivos no módulo e copio-os do mestre de marionetes. Em seguida, execute os pacotes individualmente. o problema é que os fantoches os executam sem ordem específica. Então eu tenho que esperar até 6-7 vezes quando isso é tentado para obter os pacotes instalados, mas então o último comando exec não é executado.

Eu preciso descobrir uma maneira melhor de fazer isso. Um repositório yum local ou de rede não é uma opção, então eu preciso usar o RPM da mesma forma, mas não consigo descobrir o encadeamento de pacotes, tentei usar o encadeamento e, em seguida, nada é instalado.

Qualquer orientação será ótima, já que preciso escrever isso para o tomcat e o servicemix

me pacote está abaixo (código muito bruto)

# Class: jdk6
#
# This module manages jdk6
#
# Parameters: none
#
# Actions:
#
# Requires: see Modulefile
#
# Sample Usage:
#
class jdk6 {

  file {'/tmp/':
    ensure  => 'directory',
    source  => 'puppet:///modules/jdk6/',
    recurse => 'remote',
    owner   => 'root',
    group   => 'root',
    mode    => '0755',
  }

  file { '/etc/profile.d/set_java_home.sh':
    ensure => present,
    content => 'export JAVA_HOME=/usr/java/jdk1.6.0_37/jre/bin/java'
  }

  package { "jdk": 
      provider => rpm, 
      ensure => installed, 
      source => "/tmp/jdk-6u37-linux-i586.rpm" 
    }

  package { "java_commons": 
        provider => rpm, 
        ensure => installed, 
        source => "/tmp/sun-javadb-common-10.6.2-1.1.i386.rpm" 
      }

  package { "java_db_core": 
        provider => rpm, 
        ensure => installed, 
        source => "/tmp/sun-javadb-core-10.6.2-1.1.i386.rpm" 
      }

  package { "java_client": 
      provider => rpm, 
      ensure => installed, 
      source => "/tmp/sun-javadb-client-10.6.2-1.1.i386.rpm" 
    }

  package { "java_demo": 
        provider => rpm, 
        ensure => installed, 
        source => "/tmp/sun-javadb-demo-10.6.2-1.1.i386.rpm" 
      }
  package { "java_db_demo": 
        provider => rpm, 
        ensure => installed, 
        source => "/tmp/sun-javadb-demo-10.6.2-1.1.i386.rpm" 
      }
  package { "java_dbdocs": 
        provider => rpm, 
        ensure => installed, 
        source => "/tmp/sun-javadb-docs-10.6.2-1.1.i386.rpm" 
      }
  package { "java_docs": 
        provider => rpm, 
        ensure => installed, 
        source => "/tmp/sun-javadb-javadoc-10.6.2-1.1.i386.rpm" 
      }

  exec { "alternatives –config java \
          && alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_37/jre/bin/java 20000 \
          && alternatives --install /usr/bin/javaws javaws /usr/java/jdk1.6.0_37/jre/bin/javaws 20000 \
          && alternatives --install /usr/bin/javac javac /usr/java/jdk1.6.0_37/bin/javac 20000 \
          && alternatives --install /usr/bin/jar jar /usr/java/jdk1.6.0_37/bin/jar 20000 \
          && alternatives --set java /usr/java/jdk1.6.0_37/jre/bin/java \
          && alternatives --set javaws /usr/java/jdk1.6.0_37/jre/bin/javaws \
          && alternatives --set javac /usr/java/jdk1.6.0_37/bin/javac \
          && alternatives --set jar /usr/java/jdk1.6.0_37/bin/jar \
          && export JAVA_HOME=/usr/java/jdk1.6.0_37/jre/bin/java":
    cwd     => "/tmp",
    path    => ["/usr/bin", "/usr/sbin"]
    require
  }

# this is commented as it was not installing any packages then,  
# Package['java_docs'] -> Package['java_dbdocs'] -> Package['java_db_demo'] -> Package['java_demo'] -> Package['java_client'] -> Package['java_db_core'] -> Package['java_commons'] -> Package['jdk'] 

}
    
por Abu Hamdan 25.04.2013 / 04:41

1 resposta

3

Onde houver interdependência, você pode usar 'require'.

package  {
           "mysql-python":
           ensure => installed,
           provider => pip,
           require => Package["libmysqlclient-dev"];
         }
    
por 25.04.2013 / 05:32