【发布时间】:2013-02-09 22:46:51
【问题描述】:
我在一个precision32 base box 上使用vagrant 1.0.1 来玩puppet。 配置工作正常,我的清单正在执行。 默认情况下,vagrant 会在客户机的 /opt/vagrant_ruby/bin/puppet 下安装 puppet 2.7.14。
如何配置 vagrant(或曾经在客户机上安装 puppet 的人)以使用更新的版本,如 puppet 3.0 或 3.1?
【问题讨论】:
我在一个precision32 base box 上使用vagrant 1.0.1 来玩puppet。 配置工作正常,我的清单正在执行。 默认情况下,vagrant 会在客户机的 /opt/vagrant_ruby/bin/puppet 下安装 puppet 2.7.14。
如何配置 vagrant(或曾经在客户机上安装 puppet 的人)以使用更新的版本,如 puppet 3.0 或 3.1?
【问题讨论】:
您还可以使用指定的 shell 配置器更新 puppet,之前 puppet 配置器。如Vagrant documentation中所说:
多个
config.vm.provision方法可用于定义多个供应商。这些配置器将按照它们定义的顺序运行。出于各种原因,这很有用,但最常见的是,它用于 shell 脚本可以引导系统的某些部分,以便稍后可以由另一个配置程序接管。
这是CentOS 6 的示例 Vagrantfile:
# Update puppet to version 3.2.2 before using puppet provisioning.
$puppet_update_script = <<SCRIPT
[ `rpm -qa puppetlabs-release` = 'puppetlabs-release-6-7.noarch' ] || rpm -ivh http://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-7.noarch.rpm
[ `rpm -qa puppet` = 'puppet-3.2.2-1.el6.noarch' ] || yum -y update-to puppet-3.2.2
SCRIPT
config.vm.provision :shell, :inline => $puppet_update_script
# Puppet-3.2.2 provisioning here
config.vm.provision :puppet do |puppet|
puppet.options = '--parser future'
puppet.manifests_path = 'puppet/manifests'
end
【讨论】:
你需要重建你在 vagrant 中使用的 basebox 并安装你想要的任何版本的 Puppet。我为 Cent 6.3 w/puppet 3.0 做了同样的事情。 Veewee gem 是为 Oracle Virtualbox 构建和管理 Vagrant basebox 的绝佳实用程序。
【讨论】: