2016-03-30 8 views
1

Ich benutze das jenkins puppet-Modul von puppetlabs und möchte ein bestimmtes Java-Paket in meiner jenkins-Maschine installieren. Dieses jenkins Puppenmodul verwendet java Puppenmodul für die Java-Installation. Ich möchte ein bestimmtes Java-Paket in meinem jenkins-Knoten installieren. Also ich denke, ich muss die java::package Variable des gefälschten Java-Moduls in meinem Puppenmodul außer Kraft setzen. So etwas wie diese -In Marionette wie man eine Klassenvariable überschreibt, wenn die Klasse bereits in einem gefälschten Modul deklariert ist

class {'java': 
     package => $my_jdk_package, 
    } 

Aber java :: init-Klasse bereits in jenkins::init.pp außer Kraft gesetzt wurde. Daher kann ich die Java-Klasse in meinem Puppet-Modul nicht neu deklarieren. Irgendeine Idee, wie man das macht?

+0

Und deshalb sollten Sie nie eine Ressourcentyp-Deklaration für eine öffentliche Klasse eines Moduls verwenden. –

Antwort

3

Sie können die install_java Parameter auf false in der jenkins-Klasse festgelegt:

class { 'jenkins': 
    install_java => false, 
    require  => Class['java'], 
} 

Der erfordern Parameter, dass Java vor jenkins installiert ist, um sicherzustellen, ist. Wenn Sie den Parameter install_java auf false setzen, wird das jenkins-Modul die Java-Klasse nicht mehr enthalten. Dies würde dann können Sie die Java-Klasse in Ihrem jenkins Knoten erklären, wie Sie sehen, passen:

class { 'java': 
    package => $my_jdk_package, 
} 

Wenn Sie mit hiera dann können Sie die Parameter wie folgt außer Kraft setzen:

--- 
java::package: 'packageyouwant' 

Sie würden dann nicht muss install_java auf false setzen und muss nicht die Java-Klasse in Ihrem jenkins-Knoten definieren.