1

我正在处理我的第一个 Puppet 文件来配置 Vagrant 设置,但我有点卡住了。

我正在使用 RVM 模块来处理 Ruby 和 RubyGem 安装,但显然他们使用自己的自定义阶段,称为“rvm-install”,在主阶段之前运行。

为了安装 RVM 的依赖项(包资源),我需要在“rvm-install”阶段之前运行它们。我意识到这意味着我需要在此之前运行一个自定义阶段。

我已经编写了包含需要完成的事情的课程......但我不明白如何将课程分配给舞台...... PuppetLabs 的文档似乎没有涵盖你应该如何做当你在课堂上已经有一大堆东西时。

class before-rm { 

  exec { "apt-get update":
    command => "/usr/bin/apt-get update"
  }

  package { "libxml2":
    ensure => present,
    require => Exec['apt-get update']
  }

  package { "nodejs":
    ensure => present,
    require => Exec['apt-get update']
  }

}

任何帮助将不胜感激。这就是我在同一个文件中定义舞台的方式:

# Custom stage!
stage { 'before-rvm':
  before => Stage['rvm-install']
}

Stage['before-rvm'] -> Stage['rvm-install']
4

1 回答 1

0

通常你会像这样在主阶段实例化 before-rm 类:

include before-rm

这相当于

class { 'before-rm': } 

要为另一个阶段实例化一个类,您可以使用元参数(不是类的参数,一般是所有类)stage

class { 'before-rm': 
  stage => before-rvm
}

这是文档中的链接:http: //docs.puppetlabs.com/puppet/2.7/reference/lang_run_stages.html#assigning-classes-to-stages

于 2013-11-13T18:21:52.507 回答