函数contain()与Puppet中的锚定模式

函数contain()与Puppet中的锚定模式,puppet,Puppet,这篇文章是指 是否可以用函数contain替换锚定模式,该函数包含维护执行顺序和阻止声明的浮动类。这两个清单如下所示: class profile::maven inherits profile::base { # Hiera $version = hiera('profile::maven::version', '3.2.1') $settings = hiera_hash('profile::maven::settings', undef) $environments = h

这篇文章是指

是否可以用函数contain替换锚定模式,该函数包含维护执行顺序和阻止声明的浮动类。这两个清单如下所示:

class profile::maven inherits profile::base {
  # Hiera
  $version = hiera('profile::maven::version', '3.2.1')
  $settings = hiera_hash('profile::maven::settings', undef)
  $environments = hiera_hash('profile::maven::environments', undef)

  include 'profile::java'

  anchor { 'profile::maven::begin': }

  class { '::maven::maven': version => $version, }

  anchor { 'profile::maven::end': }

  if ($settings) {
    create_resources('::maven::settings', $settings)
  }

  if ($environments) {
    create_resources('::maven::environment', $environments)
  }

  Anchor['profile::maven::begin'] -> Class['profile::java'] -> Class['::maven::maven'] -> Anchor['profile::maven::end']

}

由于Puppet 3.6.x中的当前问题,必须重命名概要文件类,否则我们会得到错误:nil:NilClass的未定义方法“ref”。应用更改将导致:

class profile::mavenp inherits profile::base {
  # Hiera
  $version = hiera('profile::maven::version', '3.2.1')
  $settings = hiera_hash('profile::maven::settings', undef)
  $environments = hiera_hash('profile::maven::environments', undef)

  include 'profile::javap'

  class { '::maven::maven': version => $version, }
  contain 'maven::maven'

  if ($settings) {
    create_resources('::maven::settings', $settings)
  }

  if ($environments) {
    create_resources('::maven::environment', $environments)
  }

  Class['profile::javap'] -> Class['::maven::maven']

}

这些变化相等吗


如果有人对如何使用profile/role方法处理Puppet中的技术依赖性有更好的了解,请毫不犹豫地分享您的想法。

后一对类与前一对类并不完全等效。最大的问题是profile::javap。请注意,其模拟概要文件::java将此作为其依赖链的一部分:

Class['::java'] -> File['profile-script:java.sh']
javap没有类似的功能

我不能100%确定class profile::mavenp是否等同于class profile::maven,尽管我认为是这样。如果把前者包括在内,你的意图会更清楚,我的不确定性也会得到解决

contain 'profile::javap'
代替或补充

include 'profile::javap'
contain 'profile::javap'
include 'profile::javap'