我在哪里为vm安装puppet?主持人还是来宾?

时间:2016-08-05 14:49:13

标签: vagrant puppet

我正在尝试用木偶配置一个流浪盒,我对于我需要安装木偶的地方非常困惑。根据Provisioning下的Vagrant文​​档,文档暗示puppet在我的主机上,当我运行vagrant up vagrant将在我的主机环境中查找我的清单和模块。 Vagrant Puppet Provisioning

但是,我不想在我的主机上安装一堆puppet模块并创建文件。我想要的是启动一个流浪盒然后在虚拟机上拥有这些清单文件和模块,这样我就可以vagrant package这个盒子并将其传递给队友。 Vagrant文​​档说我可以在vm中使用清单文件puppet.manifests_path = ["vm", "/path/to/manifests"],我可以做或者。我真的很困惑这是如何工作的。

此外,我看到了一个youtube教程,其中附带了一个github示例Vagrant example。这家伙似乎绕过了我在puppet文档中读到的所有内容。在此存储库中没有指定模块类或包的位置。有人能指出我如何配置一个最佳实践的盒子的例子吗?

2 个答案:

答案 0 :(得分:0)

  

根据Provisioning下的Vagrant文​​档,文档暗示puppet在我的主机上,当我运行vagrant up vagrant将在我的主机环境中查找我的清单和模块。

我不确定混淆在哪里,但让我试着澄清一下。

Puppet就像所有配置程序一样在guest虚拟机上运行(实际上唯一的例外是Ansible provisioner,甚至对于Ansible,流浪团队已经启动了直接在guest虚拟机上运行的Ansible local,所以当你有一个木偶供应者:

  • vagrant将尝试在来宾VM上安装puppet(如果尚未提供)

  • vagrant会将清单和模块文件从主机复制到访客(通常会在访客/tmp/vagrant-puppet ...上提供)

所以让我们看一下给定的木偶配置(一个非常常见的配置)

config.vm.provision :puppet do |puppet|
  puppet.manifests_path = "puppet/manifests"
  puppet.manifest_file = "site.pp"
  puppet.module_path = "puppet/modules"
  puppet.hiera_config_path = "puppet/hiera.yaml"
end

在我的主机上,我确实有以下结构

.project-directory
|
|---- Vagrantfile
|
|---- puppet
        |-------- hiera.yaml
        |-------- manifests
                     |------- base-app.pp
        |-------- modules
                     |------- ...modules... if any

当你vagrant up时:

  1. vagrant将在客人无法使用的情况下安装puppet
  2. vagrant会将puppet/modules文件夹从主机共享给访客/tmp/vagrant-puppet/modules-b14a7087a41f2cfba87af62658880213
  3. vagrant会将puppet/manifests文件夹从主机共享给访客/tmp/vagrant-puppet/manifests-846018e2aa141a5eb79a64b4015fc5f3
  4. 如果需要运行配置程序(首先流浪者或CLI上的配置标志传递),流浪者将在访客上执行以下命令的木偶:

    puppet apply --modulepath '/tmp/vagrant-puppet/modules-b14a7087a41f2cfba87af62658880213:/etc/puppet/modules' --manifestdir /tmp/vagrant-puppet/manifests-846018e2aa141a5eb79a64b4015fc5f3 /tmp/vagrant-puppet/manifests-846018e2aa141a5eb79a64b4015fc5f3/site.pp
    
  5. 因此您可以看到所有内容都安装在guest虚拟机上并在guest虚拟机上运行,​​您只需要在主机上维护将在guest虚拟机上安装的puppet配置和模块。

答案 1 :(得分:0)

Puppet可以安装在盒子上。只需使用这个:

Fragment