繁体   English   中英

如何影响另一个人偶模块中声明的资源类型

[英]How Affect Resource Type Declared In Another Puppet Module

我包含了nova::compute::libvirt类,该类定义了Package资源,如下所示:

package { 'libvirt-nwfilter':
  ensure => present,
  name   => $::nova::params::libvirt_nwfilter_package_name,
  before => Service['libvirt'],
  tag    => ['openstack', 'nova-support-package'],
}

问题在于RPM在未启用的YUM存储库中,其中enabled=0 我可以通过更改nova::conpute::libvirt来解决此问题,以便Package资源如下所示:

package { 'libvirt-nwfilter':
  ensure => present,
  name   => $::nova::params::libvirt_nwfilter_package_name,
  before => Service['libvirt'],
  tag    => ['openstack', 'nova-support-package'],
  install_options => ['--enablerepo', 'redhat_updates'],
}

但是我不想修改从puppet forge获得的模块,因为下次其他人设置一个puppet master时,他们可能会忘记进行修改。 我可以从包括nova::compute::libvirt的类中做些什么?

您可以通过使用yumrepo资源启用redhat_updates yum repo,然后指定要在类之前应用的元参数来解决此问题。

yumrepo { "redhat_updates":
  baseurl  => "baseurl",
  descr    => "Redhat Updates",
  enabled  => 1,
  gpgcheck => 0,
  before   => Class['nova::compute::libvirt'],
}

https://docs.puppet.com/puppet/latest/types/yumrepo.html

资源收集器提供了覆盖在其他地方声明的资源属性的可能性。 语法为:

Package<| title == 'libvirt-nwfilter' |> {
    install_options => ['--enablerepo', 'redhat_updates']
}

该替代方案避免了修改存储库定义,并且不需要引入任何新的排序关系。 但是请注意,收集器始终会实现任何匹配的虚拟资源。 还请注意,这种方法非常强大,因此很容易被滥用以使自己陷入麻烦。 拥有权利的同时也被赋予了重大的责任。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM