Puppe: die Übergabe von Parametern durch die Klassen

Dies ist ein follow auf meine frühere Frage über parametrisierte Klassen. Folgenden auf das Beispiel ein wenig weiter, ich möchte in der Lage sein, um pass läuft oder gestoppt, die in den service, aber wenn ich den Dienst hinzuzufügen, um eine box, die ich nicht verwenden "gehören Pudel::Dienst", ich benutze "gehören Pudel", was bedeutet all das andere Zeug Pudel installiert werden muss.

So, kann ich übergeben die variable an die service-Klasse wie folgt aus:

# SITE.PP
node 'tweedle.example.com' {
    include basicstuff
    include poodle
}
node 'beetle.example.com' {
    include basicstuff
    class { 'poodle':
        $ensure => 'stopped'
    }
}

## POODLE MODULE, manifests/init.pp
class poodle ( $ensure = 'running' ) {
    class {'poodle::install': }
    class {'poodle::config': }
    class {'poodle::service': 
        ensure => $ensure
    }
    Class ['poodle::install'] -> Class ['poodle::config'] ~> Class ['poodle::service']
}

...

class poodle::service ( $ensure ) {
    service {'poodle':
        ensure     => $ensure,
        enable     => true,
        restart    => "/etc/init.d/poodle stop && sleep 5 && /etc/init.d/poodle start",
        subscribe  => File['/opt/poodle/poodle.py'],
    }
}

Oder sollte ich die parameter direkt an die service-Klasse und rufen ausdrücklich sowohl der Pudel-Klasse und Pudel service-Klasse wie folgt aus:

# SITE.PP
node 'tweedle.example.com' {
    include basicstuff
    include poodle
}
node 'beetle.example.com' {
    include basicstuff
    include poodle
    class { 'poodle::service':
        $ensure => 'stopped'
    }
}

## POODLE MODULE, manifests/init.pp
class poodle {
    class {'poodle::install': }
    class {'poodle::config': }
    class {'poodle::service': 
        ensure => $ensure
    }
    Class ['poodle::install'] -> Class ['poodle::config'] ~> Class ['poodle::service']
}

...

class poodle::service ( $ensure = 'running') {
    service {'poodle':
        ensure     => $ensure,
        enable     => true,
        restart    => "/etc/init.d/poodle stop && sleep 5 && /etc/init.d/poodle start",
        subscribe  => File['/opt/poodle/poodle.py'],
    }
}

Oder ist das hinzufügen der parameter der service-Klasse und darunter NUR, dass genug, weil die service-Klasse hat Abhängigkeiten, wie diese:

# SITE.PP
node 'tweedle.example.com' {
    include basicstuff
    include poodle
}
node 'beetle.example.com' {
    include basicstuff
    class { 'poodle::service':
        $ensure => 'stopped'
    }
}

## POODLE MODULE, manifests/init.pp
class poodle {
    class {'poodle::install': }
    class {'poodle::config': }
    class {'poodle::service': 
        ensure => $ensure
    }
    Class ['poodle::install'] -> Class ['poodle::config'] ~> Class ['poodle::service']
}

...

class poodle::service ( $ensure = 'running') {
    service {'poodle':
        ensure     => $ensure,
        enable     => true,
        restart    => "/etc/init.d/poodle stop && sleep 5 && /etc/init.d/poodle start",
        subscribe  => File['/opt/poodle/poodle.py'],
    }
}

Was ist der richtige Kurs und die best practice hier? Vielen Dank im Voraus!

InformationsquelleAutor Spanky | 2014-01-16

Schreibe einen Kommentar