Onde houver interdependência, você pode usar 'require'.
package {
"mysql-python":
ensure => installed,
provider => pip,
require => Package["libmysqlclient-dev"];
}
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']
}
Onde houver interdependência, você pode usar 'require'.
package {
"mysql-python":
ensure => installed,
provider => pip,
require => Package["libmysqlclient-dev"];
}