2016-07-07 2 views
2

Ich habe eine Situation in meinem Puppet Enterprise 3.7 manifest, wo ich eine bedingte "abonnieren" von meinem Dienst zu einer Datei verwenden konnte. Ich bekomme diese Fehlermeldung ...Wie kann man im Marionetten-Unternehmen 3.7 eine bedingte Subskription einrichten?

Invalid relationship: Service[openstack-cinder-api] { subscribe => File[/etc/cinder/nfs-shares.conf] }, because File[/etc/cinder/nfs-shares.conf] doesn't seem to be in the catalog 

... und hier ist der Puppet-Code, der den obigen Fehler ergibt. Beachten Sie, dass der Fehler auftritt, wenn die Bedingung $enabled_backends =~ /netapp-cinder/ zu false ausgewertet wird.

class cinder (
... long list of parameters ... 
) { 
    if ($enabled_backends =~ /netapp-cinder/) { 
     file { '/etc/cinder/nfs-shares.conf': 
      ensure => file, 
      path => '/etc/cinder/nfs-shares.conf', 
      owner => cinder, 
      group => cinder, 
      mode => '0640', 
      content => template('cinder/nfs-shares.conf.erb'), 
     } 
    } 

    # long list of package and file resources 

    package {'qemu-kvm-rhev': 
     ensure  => 'present', 
     allow_virtual => false, 
    } -> 

    package { 'openstack-cinder': 
     ensure => 'present', 
     name => 'openstack-cinder', 
     before => [ 
      File['/etc/nova/nova.conf'], 
     ], 
    } -> 

    package { 'python-cinderclient': 
     ensure => 'present', 
    } -> 

    ... even more resource declarations ... 

    service { 'openstack-cinder-api': 
     ensure => running, 
     enable => true, 
     subscribe => [ 
      File['/etc/cinder/cinder.conf'], 
      File['/etc/cinder/nfs-shares.conf'], 
     ], 
    } -> 

    service { 'openstack-cinder-scheduler': 
     ensure => running, 
     enable => true, 
     subscribe => [ 
      File['/etc/cinder/cinder.conf'], 
      File['/etc/cinder/nfs-shares.conf'], 
     ], 
    } -> 

    service { 'openstack-cinder-volume': 
     ensure => running, 
     enable => true, 
     subscribe => [ 
      File['/etc/cinder/cinder.conf'], 
      File['/etc/cinder/nfs-shares.conf'], 
     ], 
    } 

    service { 'openstack-cinder-backup': 
     ensure => running, 
     enable => true, 
     subscribe => [ 
      File['/etc/cinder/cinder.conf'], 
      File['/etc/cinder/nfs-shares.conf'], 
     ], 
    } -> 

    ... more puppet code ... 

Gibt es irgendeine Weise, die ich die Datei abonnieren machen kann [ '/ etc/Zinder/nfs-shares.conf'] bedingt?

Antwort

1
file { '/etc/cinder/nfs-shares.conf': 
    ensure => file, 
    path => '/etc/cinder/nfs-shares.conf', 
    owner => cinder, 
    group => cinder, 
    mode => '0640', 
    content => template('cinder/nfs-shares.conf.erb'), 
    notify => Service['openstack-cinder-api', 'openstack-cinder-scheduler', 'openstack-cinder-volume', 'openstack-cinder-backup'], <-- add this attribute 
} 

entfernen Dann alle abonnierten auf File['/etc/cinder/nfs-shares.conf'] von Ihrem Openstack-Dienstleistungen. Jetzt ist der Service-Neustart-Trigger in Ihrem Conditional und Sie werden Ihr gewünschtes Verhalten haben.

Ich würde auch empfehlen, diese Openstack Service-Ressourcen in ein Lambda zu konvertieren, wenn Sie den zukünftigen Parser verwenden und von 3.7 aktualisieren, da es EOL für Puppetlabs-Unterstützung ist.

Verwandte Themen