Puppenspielklasse mit Parameter

564
Tim Holum

Ich versuche, eine Marionettenklasse mit Parametern zu bekommen. Hier ist, was ich versucht habe

class testing ( String $file = 'testing' ) { file { "/tmp/$file": ensure => present, mode => 0777, content => "Testing123" } } 

Wenn ich das starte, bekomme ich die Fehlermeldung:

Could not parse for environment production: Syntax error at 'String'; expected ')' 
0
Kein Experte hier, aber wenn Sie sich die Marionettendokumentation und die Fehlermeldung anschauen, müssen Sie möglicherweise das Leerzeichen zwischen der offenen Klammer und "String" entfernen. Das ist der einzige syntaktische Unterschied, den ich zwischen diesem und dem Puppetlabs-Dokumentationsbeispiel sehen kann. davidgo vor 8 Jahren 0
Welche Marionettenversion verwenden Sie? daxlerod vor 8 Jahren 0

1 Antwort auf die Frage

2
daxlerod

Es klingt, als würden Sie eine Marionettenversion verwenden, die älter als 4.0 ist, und nicht den "zukünftigen" Parser. Datentypen wurden mit der neuen Version der Puppensprache hinzugefügt.

Sie haben 3 Möglichkeiten:

  1. Entfernen String. Selbst in Konfigurationen, in denen die Deklaration eines Datentyps zulässig ist, ist dies optional. Innerhalb Ihrer Klasse können Sie mithilfe einer Funktion überprüfen, ob der Parameter eine Zeichenfolge ist.
  2. Aktivieren Sie den zukünftigen Parser. Dies erfolgt in Ihrer Marionetten-Konfigurationsdatei. Möglicherweise stellen Sie fest, dass Ihr anderer Code nicht kompatibel ist.
  3. Aktualisieren Sie auf eine 4.x-Version der Marionette. Dies kann zu Inkompatibilitäten mit dem Rest Ihrer Umgebung führen.

Wenn ich es wäre, würde ich # 1 machen.