2013-02-26 19 views
12

Gibt es eine Möglichkeit, Manifest-Dateien einzuchecken, wenn eine bestimmte Klasse existiert?Überprüfen Sie, ob eine Klasse existiert

möchte ich so etwas wie dies zu tun:

class foo { 
    if exists(Class["foo::${lsbdistcodename}"]) { 
     include foo::${lsbdistcodename} 
    } 
} 

So kann ich leicht distrubution/versionsspezifische Klassen hinzufügen, die dann automatisch enthalten.

Antwort

12

Sie sollten definiert statt exist-Anweisung verwenden. Der folgende Ausschnitt funktioniert für mich:

class foo { 
    if defined("foo::${lsbdistcodename}") { 
      notify {'defined':}    
      include "foo::${lsbdistcodename}" 
    } 
} 

class foo::precise { 
    notify{'precise':} 
} 

[vorausgesetzt, Sie laufen Puppen Version> 2.6.0]

+1

Dank Nun, aber das wird nicht funktionieren ‚bewirken, dass die Klasse noch nicht definiert ist. Das ist der springende Punkt meiner Frage. Ich möchte überprüfen, ob die Klasse existiert und ich kann sie einschließen. Der Code, den du gepostet hast, wird effektiv überhaupt nichts tun. Wenn die Klasse nicht enthalten ist, ist die Bedingung falsch, und wenn sie enthalten war, wird include sie nicht erneut einschließen ... –

+0

das ist nicht wahr, siehe dieses Problem - http://projects.puppetlabs.com/issues/3490 – LiorH

+0

funktioniert nicht für mich. Ich bin mit Puppe 2.7.18: 'wenn definiert (Klasse [ 'gemeinsamen']) {Hinweis ('Ja')}' ausgeben wird nichts, während 'umfassen common'' falls definiert (Klasse ['common']) {notice ('ja')} ' Ausgänge 'ja' –

Verwandte Themen