Назад | Перейти на главную страницу

Пакеты Puppet за один раз, но без репозитория

Я пытаюсь запустить марионетку для пары виртуальных машин, я намерен установить jdk6 и tomcat 6 с помощью марионетки, но я не могу использовать yum, поскольку машины не подключены к Интернету, если бы это было простое решение для одной машины, я мог бы просто используйте ручную установку, но мне нужно автоматизировать это, и мне нужно создавать и уничтожать виртуальные машины с той же конфигурацией.

В итоге я использовал чей-то скрипт для jdk, это очень грязный модуль, и он содержит все RPM из bin-файла от oracle. Я помещаю их в папку с файлами на модуле и копирую их с мастера марионеток. Затем запустите пакеты по отдельности. проблема в том, что марионетка запускает их в произвольном порядке. Поэтому мне нужно подождать 6-7 раз, когда это попытается установить пакеты, но тогда последняя команда exec не выполняется.

Мне нужно придумать лучший способ сделать это. Локальный или сетевой репозиторий yum не вариант, поэтому мне нужно использовать RPM таким же образом, но я не могу понять цепочку пакетов, я попытался использовать цепочку, но ничего не установилось.

Любое руководство будет отличным, так как мне нужно написать это для tomcat и servicemix

посылка ниже (очень грубый код)

# 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'] 

}

Там, где есть взаимозависимость, вы можете использовать «требовать».

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