标签: vagrant

Vagrant (Virtualbox) 仅主机多节点网络问题

我正在尝试使用多 VM vagrant 环境作为部署 OpenStack 的测试平台,并且在尝试从一个 VM 到 VM-inside-of-a-VM 进行通信时遇到了网络问题。

我有两个 Vagrant 节点,一个云控制器节点和一个计算节点。我正在使用仅主机网络。我的 Vagrantfile 看起来像这样:

Vagrant::Config.run do |config|

  config.vm.box = "precise64"

  config.vm.define :controller do |controller_config|
    controller_config.vm.network :hostonly, "192.168.206.130" # eth1
    controller_config.vm.network :hostonly, "192.168.100.130" # eth2
    controller_config.vm.host_name = "controller"
  end

  config.vm.define :compute1 do |compute1_config|
    compute1_config.vm.network :hostonly, "192.168.206.131" # eth1
    compute1_config.vm.network :hostonly, "192.168.100.131" # eth2
    compute1_config.vm.host_name = "compute1"
    compute1_config.vm.customize ["modifyvm", :id, "--memory", 1024]
  end
end
Run Code Online (Sandbox Code Playgroud)

当我尝试启动一个(基于 QEMU 的)VM 时,它在计算 1 上成功启动,并且它的虚拟网卡 (vnet0) 通过桥接器 br100 连接:

root@compute1:~# brctl show 100
bridge name bridge …
Run Code Online (Sandbox Code Playgroud)

networking virtualbox qemu openstack vagrant

9
推荐指数
1
解决办法
8677
查看次数

如何将我的部署密钥移动到 vagrant 中?

我想将一个 ssh 密钥移动到 vagrant 中并将它们放入~/.ssh,最简单的方法是什么?我的 Vagrant 文件中有以下内容:

config.vm.synced_folder "conf.d", "/svr/conf.d"
config.vm.provision :shell, 
:inline => "ls -l /svr/conf.d/.ssh"
Run Code Online (Sandbox Code Playgroud)

总共 4 -rw-r--r-- 1 vagrant vagrant 1670 Mar 26 08:19 id_rsa.mediapop

config.vm.provision :shell, 
:inline => "cp /svr/conf.d/.ssh/id_rsa.mediapop /home/ubuntu/.ssh/id_rsa"
config.vm.provision :shell, 
:inline => "ls -l /home/ubuntu/.ssh"
Run Code Online (Sandbox Code Playgroud)

总共 4 -rw------- 1 ubuntu ubuntu 0 Mar 22 08:56authorized_keys -rw-r--r-- 1 root root 1670 Mar 26 08:59 id_rsa

但是当我这样做时,vagrant ssh -c "ls -l ~/.ssh"我得到:

$ vagrant ssh -c "ls -l ~/.ssh"
total 4 …
Run Code Online (Sandbox Code Playgroud)

vagrant

9
推荐指数
3
解决办法
2万
查看次数

vagrant synced_folders and VBoxInternal2/SharedFoldersEnableSymlinksCreate

ok here's the deal

我在 Windows 8 上运行 vagrant(ubunttu 12.10) 但每次我尝试从非 nfs 共享文件夹中创建 virtualenv (python) 时,我都会收到“协议错误”,结果是 virtualbox 不允许符号链接默认情况下,但可以使用它来为每个共享启用它

VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME", "1"

问题是最新的流浪者不再接受我的股票的“名称/别名”,我应该如何从该设置中引用它?如果我的份额是 /var/www ?

# # Use VBoxManage to customize the VM. For example to change memory: # vb.customize ["modifyvm", :id, "--memory", "1024"] # end # # View the documentation for the provider you're using for more # information on available options.

vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME", "1"]

任何帮助将不胜感激。

ubuntu virtualbox vagrant

9
推荐指数
1
解决办法
5119
查看次数

我应该在 Mac OSX Mavericks 上使用 python pip 还是自制软件安装 Ansible?

我最近开始使用 OSX 来管理我的 linux 机器,所以我对在 OSX 上使用 linux 程序非常陌生。

我想使用带有 Ansible 的 Vagrant 来引导我的开发环境,所以我需要先安装它。

但是我发现了两种在 OSX 上安装 Ansible 的方法:

点子:http : //devopsu.com/guides/ansible-mac-osx.html

自制:https : //github.com/Homebrew/homebrew/blob/master/Library/Formula/ansible.rb

我已经使用 pip 方法安装了 Ansible,因为我首先遇到了该指南。

这两种方法的优缺点是什么?我应该使用 pip 还是 homebrew 安装 Ansible?

我发现轻松安装会干扰自制软件:

Warning: /usr/bin occurs before /usr/local/bin
This means that system-provided programs will be used instead of those
provided by Homebrew. The following tools exist at both paths:

    easy_install
    easy_install-2.7
Run Code Online (Sandbox Code Playgroud)

python mac-osx vagrant ansible

9
推荐指数
2
解决办法
2万
查看次数

来自外部 Vagrant 框的连接被拒绝,具有专用网络

我已经在一个带有私有网络 IP 的流浪盒子上设置了 CentOS 6。我可以使用 IP SSH 进入盒子,这样就可以了。但是,我在卷曲它时在端口 80 上收到拒绝连接。里面有一个非常基本的 nginx 提供其默认的欢迎页面。从盒子内部卷曲它是有效的。

Vagrant.configure("2") do |config|
  config.vm.box = "Centos-6.3-minimal"
  config.vm.box_url = "https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box"

  config.vm.network :private_network, ip: "192.168.33.44"
  config.vm.hostname = "local.example.com"

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
  end
end
Run Code Online (Sandbox Code Playgroud)

以下是我尝试过的一些事情:

  • 更改为端口转发 80 -> 8080。Curling onlocalhost:8080就挂在那里。
  • 尝试另一个 IP 地址。没有不同。
  • 打开python -m SimpleHTTPServer即知监听的服务器上0.0.0.0。仍然拒绝连接。

众所周知,这些东西是有效的:

  • 使用给定的专用网络 IP SSH 连接到服务器有效。
  • 从盒子内部卷曲工作。
  • 相同的设置适用于真实服务器。

我已经安装了 Guest Additions,但是它们在来宾和主机上的版本不同。这可能是问题所在。但是为什么 SSH 可以工作,而不是端口 80?这是我做的输出vagrant reload:https : //gist.github.com/magnars/496e553f07ad5c770c54

更新

虽然这不起作用:

config.vm.network :forwarded_port, …
Run Code Online (Sandbox Code Playgroud)

nginx centos vagrant

9
推荐指数
1
解决办法
1万
查看次数

如何为 git 等工作负载获得不错的 NFS 性能?

我vagrant为运行 OSX 的开发人员管理一个设置,以管理 VirtualBox 系统进行开发。

为了inotify在 linux 机器内部提供支持,我们避开了与 VirtualBox 共享目录的常用方法:相反,Virtualbox 机器公开了一个 NFS 共享,该共享安装在 OSX 中。

Git(以及相关工具,如 sourcetree)在 OSX 中的共享目录中运行。其性能极差:仅运行git status. 将一个小型存储库克隆到挂载的 NFS 驱动器可能需要几分钟(在本地驱动器上为 5-10 秒)。

显然 NFS 的性能会比直接写入本地 SSD 更差,但 NFS 只是在 Virtualbox 的虚拟专用网络接口上运行。

我运行了几个基准测试。首先:

dd if=/dev/zero of=test bs=16 count=16384
Run Code Online (Sandbox Code Playgroud)

每个结果都基于 100 个样本。

# local drive
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
0.990   1.000   1.020   1.021   1.030   1.130

# on the shared NFS drive
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. …
Run Code Online (Sandbox Code Playgroud)

nfs virtualbox shared-storage vagrant

9
推荐指数
2
解决办法
8807
查看次数

Vagrant 可以指向 Puppet 清单的目录以供执行吗?

我正在使用 Vagrant 来快速启动一些初始 Puppet 配置,并且对如何在 puppet 执行工作流中包含/运行多个清单(不仅仅是 site.pp)而不将额外的清单制作成模块并以这种方式包含它们感到困惑。

在我将 Vagrant 指向的 puppet manifests 目录中(见下文),我有两个要执行的清单:site.pp 和 hierasetup.pp。

config.vm.provision "puppet" do |puppet|
  puppet.manifests_path = "puppet_files/manifests"
  puppet.module_path    = "puppet_files/modules"
  puppet.manifest_file  = "site.pp"
  puppet.options = "--verbose --debug"
end 
Run Code Online (Sandbox Code Playgroud)

目前我让 site.pp 成为调用 hierasetup.pp 的清单。我的 site.pp 看起来像这样:

File {
  owner => 'root',
  group => 'root',
  mode  => '0644',
}

import "hierasetup.pp"

include jboss
Run Code Online (Sandbox Code Playgroud)

但是我收到关于弃用“导入”的错误:

警告:在 /tmp/vagrant-puppet-1/manifests/site.pp:33 中不推荐使用“import”。请参阅http://links.puppetlabs.com/puppet-import-deprecation (在grammar.ra:610:in `_reduce_190')

根据“要尝试的事情”下引用的 URL,它说“要将节点定义保存在单独的文件中,请指定一个目录作为主清单”。

此外,主要清单上的这个傀儡文档说:

"推荐:如果您大量使用主清单而不是依赖 ENC,请考虑将清单设置更改为 $confdir/manifests。这可以让您将顶级代码拆分为多个文件,同时避免使用 import 关键字。它也将匹配简单环境的行为。 ” …

puppet vagrant

9
推荐指数
1
解决办法
3715
查看次数

将使用 Vagrant 构建的 VM 打包为 OVA 设备

我已经使用 Vagrant 和一些配置脚本创建了一个虚拟机。现在,我想将完全配置的机器的副本分发给研讨会的参与者。本次研讨会将主要讨论 VM 中运行的软件,而不是 Vagrant,因此在参与者的机器上安装 Vagrant 是不可能的。有没有一种简单的方法可以从我用 Vagrant 创建的 VM 创建一个 OVA 文件?

我打算做的“艰难的方法”是编写一个脚本,使用各种vboxmanage命令来

  • 克隆 Vagrant 创建的 VM
  • 删除不必要的共享文件夹(仅用于配置)。
  • 将克隆导出到 OVA 文件

但也许有更好的方法?

virtualbox vagrant

8
推荐指数
1
解决办法
7949
查看次数

Vagrant 未准备好应对 VirtualBox 和 Laravel Homestead 上的 SSH 错误

Vagrant Version: 1.6.3
VirtualBox: 4.3.14
Ubuntu 14.04 LTS 64 Bit
Run Code Online (Sandbox Code Playgroud)

我在这方面已经有一段时间了,无法弄清楚这一点。我有我的公钥和私钥设置,它们可以工作。我知道在我将 Ubuntu 从 32 位更新到 64 位之前,它们工作正常并不是问题所在。我已经卸载并重新安装了所有提到的软件,但仍然没有修复。这是在 Laravel Homestead 实例上,但它发生在我所有的盒子上,包括来自 vagrants 主页的 precision32。

当我运行vagrant ssh-config我得到的错误是

    The provider for this Vagrant-managed machine is reporting that it
    is not yet ready for SSH. Depending on your provider this can carry
    different meanings. Make sure your machine is created and running and
    try again. Additionally, check the output of `vagrant status` to verify
    that the machine is in the state that …
Run Code Online (Sandbox Code Playgroud)

ssh virtual-machines virtualbox vagrant

8
推荐指数
1
解决办法
1万
查看次数

什么是 dd if=/dev/zero of=/EMPTY bs=1M

我经常看到这个命令在创建一个 Vagrant 框时使用

sudo dd if=/dev/zero of=/EMPTY bs=1M
Run Code Online (Sandbox Code Playgroud)

对我来说,它似乎是将大量 NULL 字符复制到一个名为 EMPTY 的文件中,文件大小为 FS 根目录,每次 1MB。我的问题是,一旦删除文件,这样做如何优化磁盘上的空间使用。

linux filesystems vagrant

8
推荐指数
1
解决办法
6624
查看次数