vagrant会自动安装puppet吗?

时间:2014-02-05 21:56:16

标签: vagrant puppet

我在Vagrantfile

中有这个
Vagrant.configure("2") do |config|
    config.vm.provision "puppet"
  end

然而,当我跑puppet --version时,我得到了:

[vagrant@vagrant-centos65 ~]$ puppet --version
-bash: puppet: command not found

我需要手动安装木偶吗?

9 个答案:

答案 0 :(得分:17)

不,(目前)Vagrant没有自动安装。

因此您需要使用已经安装了它的基盒(Puppet Labs provides框),或者您需要自己安装它。可能最简单的安装方法是在木偶供应商之前使用shell provisioner

答案 1 :(得分:7)

为了回应@tmatilai,我创建了这个简单的设置:

Vagrantfile:

Vagrant.configure(2) do |config|
  config.vm.box = "centos6.5_64"
  config.vm.provision "shell", path: "manifests/puppet.sh"
  config.vm.provision "puppet"
end

清单/ puppet.sh:

echo "Adding puppet repo"
sudo rpm -ivh https://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
echo "installing puppet"
sudo yum install puppet -y
echo "ensure puppet service is running"
sudo puppet resource service puppet ensure=running enable=true
#echo "ensure puppet service is running"
#sudo puppet resource service puppetmaster ensure=running enable=true

echo "ensure puppet service is running for standalone install"
sudo puppet resource cron puppet-apply ensure=present user=root minute=30 command='/usr/bin/puppet apply $(puppet apply --configprint manifest)'

[vagrant@vagrant-centos65 home]$ puppet --version
3.4.2

答案 2 :(得分:6)

如果你想使用一个插件,我做了一个将自动从Vagrantfile中给出的版本安装Puppet:

Vagrant.configure("2") do |config|

  config.puppet_install.puppet_version = :latest

end

这也会做一些很酷的技巧,例如确保您指定的木偶版本是有效版本之类,详情请参阅:https://github.com/petems/vagrant-puppet-install/

答案 3 :(得分:4)

是。我不确定Vagrant的状态在其他一些答案的时候是什么,但是现在puppet不必通过shell配置器安装,因为Vagrant有一个内置的支持木偶配置器。

在最基本的级别,您可以通过向您的`Vagrantfile添加provision "puppet"provision "puppet_server"来确保您的盒子支持木偶。例如:

#open config block (already present in your templated Vagrantfile)
Vagrant.configure(2) do |config|

  #...[snip]... other config.vm settings. Ex...
  # Ubuntu 14.04 LTS version
  #config.vm.box = "ubuntu/trusty64"

  # Make puppet avail inside machine
  config.vm.provision "puppet"


#close out Vagrant configuration for this instance
end

using puppet设置本地puppet apply的木偶(使用本地清单配置您的机器),而using puppet_server将您与木偶大师联系起来,并允许您配置您的流浪盒使用木偶服务器(木偶主代理)。

答案 4 :(得分:4)

正如其他一些人已经回答的那样,没有“标准”确保预先安装了Puppet的流浪盒。

按照设计,流浪盒可以预先安装“任何东西”。或者它可以很容易地预先安装“什么都没有”。这一切都取决于谁创造了它以及它们在设置盒子的过程中包含的内容。

如果您发现您的计算机上没有预安装Puppet,您也可以使用Mitchell Hashimoto放在一起的其中一个脚本。有关详细信息,请参阅GitHub上的以下项目...

https://github.com/hashicorp/puppet-bootstrap

答案 5 :(得分:2)

在撰写本文时,Vagrant会预先安装puppet服务。我ssh-ed到客户机(使用'ubuntu / trusty64'框)并获得以下结果:

vagrant@vagrant-ubuntu-trusty-64:~$ puppet --version
3.4.3

答案 6 :(得分:1)

正如其他人所说,它取决于盒子。例如,ubuntu/trusty64预装了木偶,而ubuntu/xenial64没有。

为了解决这个问题,为Ubuntu ubuntu/xenial64添加一个内联shell配置器,然后在puppet配置器就足够了:

config.vm.box = "ubuntu/xenial64"

config.vm.provision :shell, :inline => 'apt-get -y update; apt-get -y install puppet'

config.vm.provision :puppet do |puppet|
# ...

答案 7 :(得分:0)

截至2016年6月16日,据我所知,Vagrant不会在客户端虚拟机中安装puppet。我相信它的姐妹项目" packer"它希望你明确地这样做。请参阅:https://www.packer.io/docs/provisioners/puppet-masterless.html

  

注意:此配置程序不会自动安装Puppet。   这个供应商希望Puppet已经安装在   机。通常的做法是在之前使用shell配置程序   Puppet供应商要做到这一点。

答案 8 :(得分:0)

this worked for me:
  

将此内容放入您的Vagrantfile中 - 在您的配置之前

$script = <<SCRIPT
echo I am installing puppet on guest 
sudo apt-get install -yq puppet=*
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: $script
end

这应该在您进行其他配置之前在访客上安装一个木偶代理