将类分配给自定义阶段(Puppet)

时间:2013-11-08 03:00:49

标签: rvm vagrant puppet

我正在处理我的第一个Puppet文件,用于配置Vagrant设置,我有点陷入困境。

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

为了获得安装RVM的依赖项(Package资源),我需要在'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']
  }

}

非常感谢任何帮助。这就是我在同一个文件中定义Stage的方法:

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

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

1 个答案:

答案 0 :(得分: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