Vagrant 在哪里安装虚拟机的puppet?主人还是客人?

Vagrant 在哪里安装虚拟机的puppet?主人还是客人?,vagrant,puppet,Vagrant,Puppet,我正试图提供一个带有木偶的流浪者盒子,我非常困惑我需要在哪里安装木偶。根据Provisioning下的Vagrant文档,该文档意味着puppet在我的主机上,当我运行Vagrant upVagrant时,它将在我的主机环境中查找我的清单和模块 但是,我不想在主机上安装一堆puppet模块并创建文件。我想要的是启动一个流浪者盒子,然后将这些清单文件和模块放在虚拟机上,这样我就可以vagrant packagebox并将它传递给队友。Vagrant文档说,我可以在vm中拥有清单文件,如sopupp

我正试图提供一个带有木偶的流浪者盒子,我非常困惑我需要在哪里安装木偶。根据Provisioning下的Vagrant文档,该文档意味着puppet在我的主机上,当我运行
Vagrant up
Vagrant时,它将在我的主机环境中查找我的清单和模块

但是,我不想在主机上安装一堆puppet模块并创建文件。我想要的是启动一个流浪者盒子,然后将这些清单文件和模块放在虚拟机上,这样我就可以
vagrant package
box并将它传递给队友。Vagrant文档说,我可以在vm中拥有清单文件,如so
puppet.manifests\u path=[“vm”,“/path/to/manifests”]
,我可以执行或。我真的不知道这是怎么回事

此外,我还看到了一个youtube教程,其中附带了一个github示例。这家伙似乎绕过了我在木偶文档上读到的所有东西。在此存储库中,他没有指定模块类或包。有人能给我举个例子,说明如何提供一个最佳实践的箱子吗

根据Provisioning下的Vagrant文档,该文档意味着puppet在我的主机上,当我运行Vagrant up时,Vagrant将在我的主机环境中查找我的清单和模块

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

Puppet-like all provisioner在guest上运行(实际上唯一的例外是Ansible,甚至对于Ansible,vagrant团队已经启动了直接在guest上运行的),因此当您有Puppet provisioner时:

  • vagrant将尝试在来宾VM上安装puppet(如果它还不可用)

  • vagrant将把清单和模块文件从主机复制到客户机上(一般情况下,客户机上的
    /tmp/vagrant puppet…

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

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

.project-directory
|
|---- Vagrantfile
|
|---- puppet
        |-------- hiera.yaml
        |-------- manifests
                     |------- base-app.pp
        |-------- modules
                     |------- ...modules... if any
当你流浪起来时:

  • 如果客人没有木偶,流浪汉会安装木偶
  • vagrant将从主机向来宾共享
    puppet/modules
    文件夹
    /tmp/vagrant puppet/modules-b14a7087a41f2cfba87af62658880213
  • vagrant将从主机向来宾共享
    puppet/manifests
    文件夹
    /tmp/vagrant puppet/manifests-846018e2aa141a5eb79a64b4015fc5f3
  • 如果需要运行provisioner(CLI上的第一个vagrant up或provisioner标志传递),vagrant将对来宾执行以下命令:

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

    根据Provisioning下的Vagrant文档,该文档意味着puppet在我的主机上,当我运行Vagrant up时,Vagrant将在我的主机环境中查找我的清单和模块

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

    Puppet-like all provisioner在guest上运行(实际上唯一的例外是Ansible,甚至对于Ansible,vagrant团队已经启动了直接在guest上运行的),因此当您有Puppet provisioner时:

    • vagrant将尝试在来宾VM上安装puppet(如果它还不可用)

    • vagrant将把清单和模块文件从主机复制到客户机上(一般情况下,客户机上的
      /tmp/vagrant puppet…

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

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

    .project-directory
    |
    |---- Vagrantfile
    |
    |---- puppet
            |-------- hiera.yaml
            |-------- manifests
                         |------- base-app.pp
            |-------- modules
                         |------- ...modules... if any
    
    当你流浪起来时:

  • 如果客人没有木偶,流浪汉会安装木偶
  • vagrant将从主机向来宾共享
    puppet/modules
    文件夹
    /tmp/vagrant puppet/modules-b14a7087a41f2cfba87af62658880213
  • vagrant将从主机向来宾共享
    puppet/manifests
    文件夹
    /tmp/vagrant puppet/manifests-846018e2aa141a5eb79a64b4015fc5f3
  • 如果需要运行provisioner(CLI上的第一个vagrant up或provisioner标志传递),vagrant将对来宾执行以下命令:

    puppet apply --modulepath '/tmp/vagrant-puppet/modules-b14a7087a41f2cfba87af62658880213:/etc/puppet/modules' --manifestdir /tmp/vagrant-puppet/manifests-846018e2aa141a5eb79a64b4015fc5f3 /tmp/vagrant-puppet/manifests-846018e2aa141a5eb79a64b4015fc5f3/site.pp
    

  • 因此,您可以看到所有内容都安装在guest上并在guest上运行,您只需在主机上维护将安装在guest上的puppet配置和模块。

    puppet可以安装在机箱上。就用这个吧:

    config.vm.box = "puppetlabs/centos-7.2-64-puppet"
    

    木偶可以安装在盒子上。就用这个吧:

    config.vm.box = "puppetlabs/centos-7.2-64-puppet"
    

    您可能会更幸运地检查这很有趣,我希望能帮助您我不是一个流浪汉,但您对Puppet有两个基本的选择:(1)将所有需要的清单和数据(包括模块)放在正在配置的机器上,并使用
    Puppet apply
    应用它们,或者(2)将所需的清单和数据放在运行puppetmaster服务的机器上,并在正在配置的机器上使用
    puppet agent
    ,以检索和应用适当的配置。听起来你已经看到了这两个例子。但是,在任何情况下,Puppet本身都需要在机器上进行配置。快速浏览之后,github上的示例链接绝对是将Puppet与Vagrant一起使用的最佳实践。使用vagrant puppet provisioner插件无疑是阻力最小的途径。这将是你问题的答案,除了简单地说“是的,像你提供的链接那样做”在我看来是一个糟糕的答案。此外,如果你
    vagrant软件包
    ,那么你的队友就不需要这些可用的或安装的模块。如果你把流浪汉的档案传给他们,你的运气可能会更好