[英]Puppet: write a repo resource but include it in multiple places without duplication
我正在為我的應用程序編寫一個人偶模塊,從幾天開始,我就一直在如何管理存儲庫上苦苦掙扎。
我有puppet 4.10 ,所有節點都是Centos 7
我的應用程序模塊中的init.pp文件是:
class my_app{
anchor { '::my_app::begin': } ->
class { '::my_app::repo': } ->
class { '::my_app::install': } ->
class { '::my_app::config': } ->
class { '::my_app::service': } ->
anchor { '::my_app::end': }
}
和repo.pp類是:
class my_app::repo{
if ! defined(Yumrepo[my_app]) {
yumrepo {'my_app' :
ensure => 'present',
descr => 'my_app RPM repository',
baseurl => 'http://my_repo_server.com/repos/my_app',
gpgcheck => 0
}
}
}
init.pp類已安裝在所有服務器上,現在的問題是所有客戶端以及某些服務器也需要具有my_app_client.pp :
class my_app::my_app_client{
include my_app::repo
[...]
}
該代碼返回的錯誤已被聲明,因為我兩次聲明了my_app :: repo類。
我認為在這種情況下定義2個repo定義是不正確的,並且將其聲明為Defined Resource Types似乎也不起作用。
我應該如何解決這個問題? 在這種情況下的良好做法是什么?
提前致謝。
這里的問題是你不能使用
class { '::my_app::repo': }
和
include my_app::repo
在同一組清單中。
有關此文檔的信息,請訪問https://puppet.com/docs/puppet/5.3/lang_classes.html#declaring-classes 。 結果是,您只能對每個類使用一次類似資源的聲明(即class
),並且不能將其與include
混合使用,但是您可以根據需要多次include
一個類。
對於您的情況,建議您將my_app
類重構為使用include
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.