簡體   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