簡體   English   中英

木偶:編寫回購資源,但將其包含在多個位置而無需重復

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM