如何在 puppet enterprise 3.7 中设置条件订阅?
How can one set up a conditional subscribe in puppet enterprise 3.7?
我的 puppet enterprise 3.7 清单中有一个情况,我可以使用从我的服务到文件的条件 'subscribe'。我收到此错误消息 ...
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
... 这是导致上述错误的人偶代码。请注意,当条件 $enabled_backends =~ /netapp-cinder/
的计算结果为 false 时会发生错误。
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 ...
有什么方法可以使订阅文件 ['/etc/cinder/nfs-shares.conf'] 成为条件?
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
}
然后从您的 openstack 服务中删除 File['/etc/cinder/nfs-shares.conf']
上的所有订阅。现在服务重启触发器在您的条件范围内,您将获得所需的行为。
如果您使用未来的解析器并从 3.7 升级,我还建议将这些 openstack 服务资源转换为 lambda,因为它是支持 puppetlabs 的 EOL。
我的 puppet enterprise 3.7 清单中有一个情况,我可以使用从我的服务到文件的条件 'subscribe'。我收到此错误消息 ...
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
... 这是导致上述错误的人偶代码。请注意,当条件 $enabled_backends =~ /netapp-cinder/
的计算结果为 false 时会发生错误。
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 ...
有什么方法可以使订阅文件 ['/etc/cinder/nfs-shares.conf'] 成为条件?
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
}
然后从您的 openstack 服务中删除 File['/etc/cinder/nfs-shares.conf']
上的所有订阅。现在服务重启触发器在您的条件范围内,您将获得所需的行为。
如果您使用未来的解析器并从 3.7 升级,我还建议将这些 openstack 服务资源转换为 lambda,因为它是支持 puppetlabs 的 EOL。