【问题标题】:Does vagrant automatically install puppet?vagrant 会自动安装 puppet 吗?
【发布时间】:2014-03-02 14:24:47
【问题描述】:

我的Vagrantfile 中有这个:

Vagrant.configure("2") do |config|
    config.vm.provision "puppet"
  end

然而,当我运行 puppet --version 时,我得到:

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

我需要手动安装 puppet 吗?

【问题讨论】:

  • 这取决于您使用的 Vagrant Box。有些预装了 Puppet。其他的,比如 CentOS,则不这样做。

标签: vagrant puppet


【解决方案1】:

不,(目前)Vagrant 不会自动安装它。

因此,您要么需要使用已经安装的 basebox(Puppet Labs provides 盒子),要么需要自己安装。可能最简单的安装方法是在 puppet provisioner(s) 之前使用 shell provisioner

【讨论】:

  • 好的,我将使用 shell 配置器。我在github上找到了一些。
  • 我刚刚在下面为 ubuntu/xenial64 添加了这样一个 shell 配置器的示例 - 请参阅:stackoverflow.com/a/50189525/1510754
【解决方案2】:

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

流浪文件:

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

【讨论】:

  • 我想我在某处读到过这种动态木偶安装是当今的首选。知道这是否正确吗?
  • 公平 :) 感谢您的回复。
【解决方案3】:

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

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

  config.puppet_install.puppet_version = :latest

end

这也会做一些很酷的技巧,比如确保你指定的 puppet 版本是一个有效的版本等等,完整的细节在这里:https://github.com/petems/vagrant-puppet-install/

【讨论】:

  • 有什么东西阻止这个插件使用比 puppet 3.4.3 更高的东西吗?
  • 不,它应该适用于您使用的包提供程序上找到的任何最新版本的 Puppet(没有特定版本,它只运行 apt-get install puppetyum install puppetpkg_add puppet 等)
【解决方案4】:

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

在最基本的层面上,您可以通过将provision "puppet"provision "puppet_server" 添加到您的`Vagrantfile.例如:

#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 设置 puppet(使用本地清单来配置您的机器),而 using puppet_server 将您连接到 puppet master,并允许您使用 puppet 服务器(a傀儡主代理)。

【讨论】:

  • 问题是如何将 Puppet 安装在尚未安装的 Vagrant box 上。据我所知,Vagrant 仍然不会自动安装它(只有 Chef),所以你要么必须使用配置器(或插件),要么使用预构建的盒子。
  • 这个答案是错误的。正如@tmatilai 所说,您必须自己在虚拟机中安装 puppet。请参阅下面的答案以获取适当的文档参考。
  • 你是对的,不幸的是,我无法删除已接受的答案。我给 OP 发了消息,但没有运气
【解决方案5】:

正如其他一些人已经回答的那样,没有“标准”可以确保 vagrant box 预装了 Puppet。

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

如果你发现你的机器上没有预装 Puppet,你也可以使用Mitchell Hashimoto 整理的脚本之一。有关详细信息,请参阅 GitHub 上的以下项目...

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

【讨论】:

    【解决方案6】:

    在撰写本文时,Vagrant 确实预安装了 puppet 服务。我 ssh 进入来宾机器(使用框 'ubuntu/trusty64')并得到以下结果:

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

    【讨论】:

    • 正如 tmatilai 所说,这取决于您从哪里获得 Vagrant 盒子,有些 Vagrant 盒子预装了 Puppet,有些则没有
    • 同意。在我的 ubuntu 盒子里。它是预先配置的,而在我同事的实验中,他的 centos 盒子可能没有预装 puppet
    【解决方案7】:

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

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

    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|
    # ...
    

    【讨论】:

      【解决方案8】:

      据我所知,截至 2016 年 6 月 16 日,Vagrant 不会在客户端 VM 中安装 puppet。我相信就像它的姊妹项目“packer”一样,它希望你明确地这样做。见:https://www.packer.io/docs/provisioners/puppet-masterless.html

      注意:此配置程序不会自动安装 Puppet。 此配置程序期望 Puppet 已安装在 机器。通常的做法是在 执行此操作的 Puppet Provisioner。

      【讨论】:

        【解决方案9】:
        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
        

        这应该在您进行其他配置之前在客户机上安装 puppet 代理

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-11-20
          • 1970-01-01
          • 1970-01-01
          • 2016-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-19
          相关资源
          最近更新 更多