簡體   English   中英

在Puppet中包含定義的資源類型

[英]Containing a defined resource type in Puppet

我正在嘗試創建在其他資源之前的已定義資源類型(:: apt :: ppa)的實例。 我正在使用PuppetLabs Apt模塊

通過模塊添加新存儲庫時,定義的類型包含一個exec語句 ,該語句通知apt :: update,以便可以正確安裝所有可能需要的軟件包。 但是,當我運行下面的代碼時,在我嘗試安裝Java后安排了通知的時間,從而導致Java安裝失敗。 我試過在apt :: ppa聲明周圍放置錨點,但這無濟於事。 我還可以做些什么?

class rap::java(
  $version = '7',
) {
  $package = "oracle-java${version}-installer"

  apt::ppa { 'ppa:webupd8team/java': } ->
  exec { 'accept-java-license':
    command => "/bin/echo ${package} shared/accepted-oracle-license-v1-1 select true | /usr/bin/sudo /usr/bin/debconf-set-selections",
    unless  => "/usr/bin/debconf-show ${package} | grep 'shared/accepted-oracle-license-v1-1: true'",
  } ->
  class { '::java':
    package      => $package,
    distribution => 'oracle-jre',
  }

  file_line { 'java_environment':
    path => '/etc/environment',
    line => "JAVA_HOME=\"/usr/lib/jvm/java-${version}-oracle\"",
  }
}

我相信問題在於,您需要在已完成的類中包含apt類,才能獲得正確的排序。

這在新的“精確”盒子上對我有用:

class rap::java(
  $version = '7',
) {
  $package = "oracle-java${version}-installer"

  include apt

  apt::ppa { 'ppa:webupd8team/java':
     package_manage => true,
  }

  exec { 'accept-java-license':
    command => "/bin/echo ${package} shared/accepted-oracle-license-v1-1 select true | /usr/bin/sudo /usr/bin/debconf-set-selections",
    unless  => "/usr/bin/debconf-show ${package} | grep 'shared/accepted-oracle-license-v1-1: true'",
  }

  class { '::java':
    package      => $package,
    distribution => 'oracle-jre',
    require => [
      Apt::Ppa['ppa:webupd8team/java'],
      Exec["accept-java-license"],
    ]
  }

  file_line { 'java_environment':
    path => '/etc/environment',
    line => "JAVA_HOME=\"/usr/lib/jvm/java-${version}-oracle\"",
  }
}

運行日志:

Notice: Compiled catalog for precise64 in environment production in 0.78 seconds
Notice: /Stage[main]/Apt/File[preferences]/ensure: created
Notice: /Stage[main]/Rap::Java/Exec[accept-java-license]/returns: executed successfully
Notice: /Stage[main]/Rap::Java/File_line[java_environment]/ensure: created
Notice: /Stage[main]/Apt/Apt::Setting[conf-update-stamp]/File[/etc/apt/apt.conf.d/15update-stamp]/ensure: defined content as '{md5}0962d70c4ec78bbfa6f3544ae0c41974'
Notice: /Stage[main]/Rap::Java/Apt::Ppa[ppa:webupd8team/java]/Package[python-software-properties]/ensure: created
Notice: /Stage[main]/Rap::Java/Apt::Ppa[ppa:webupd8team/java]/Exec[add-apt-repository-ppa:webupd8team/java]/returns: executed successfully
Notice: /Stage[main]/Apt::Update/Exec[apt_update]: Triggered 'refresh' from 1 events
Notice: /Stage[main]/Java/Package[java-common]/ensure: created
Notice: /Stage[main]/Java/Package[java]/ensure: created
Notice: Applied catalog in 39.58 seconds

為了進一步擴展問題,通常會將阻礙標准設置運行的對象移入運行階段( 在此處記錄 )。

因此,我可能會將所有各種回購設置人偶代碼與其他先決條件一起移入預運行階段(通常將其放入回購設置中),運行階段將始終在主階段之前首先運行,因此您不必擔心關於在每個軟件包上明確設置回購協議的要求。 這使得對存儲庫和先決條件的更改變得容易得多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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