2017-07-24 1 views
0

Ich mache ein Test-Manifest für Marionette, um ein Paket mit choclatey Anbieter von Schmiede zu installieren.Include-Klasse von einem anderen Modul in Marionette

Wenn ich mich bewerben mit der Datei test.pp mit dem Code:

class test { 
    include chocolatey 
    if $::kernel == 'windows' { 
    Package { 
     provider => chocolatey, 
    } 
    } 
    package { '7zip': 
    ensure => installed, 
    } 
} 

nicht funktioniert und chocolatey installiert nichts, aber wenn ich ohne die Klasse mit dem Code versuchen:

include chocolatey 
if $::kernel == 'windows' { 
    Package { 
    provider => chocolatey, 
    } 
} 
package { '7zip': 
    ensure => installed, 
} 

Warum? In der ersten Option, warum funktioniert nicht?

+2

Eine wilde Vermutung, haben Sie einfach den obigen Code in eine Datei und dann mit Puppet ausführen? –

+0

ja, und ich begann zu verstehen, warum, im ersten Beispiel habe ich 'node default {include test}' hinzugefügt und es funktioniert. Weil dieser Code Teil eines Moduls sein muss? – xabim

+2

Wenn Sie Marionette nur für eine Klasse anwenden, wird die Klasse definiert, aber sie wird nicht deklariert. Es ist so, als würde man eine Funktion in der Shell definieren und sie dann nicht wirklich aufrufen. Also musst du die Klasse irgendwo "einschließen". –

Antwort

1

Ich benutzte die test.pp mit marionette anwendung --test test.pp aber der erste Code Ich erklärte nur die Klasse, aber nicht mit ihm. Dieser Code funktioniert:

Verwandte Themen