有没有办法使用 vagrant 1.2.1 或更高版本转发一系列端口?我知道您可以使用以下方法单独转发任意数量的端口
config.vm.forward_port 80, 4567
Run Code Online (Sandbox Code Playgroud)
或者,答案是干脆不使用 vagrant 来做这样的事情?
当我apt-get install apache2在安装完成时服务器自动启动,默认的 Apache 配置使/var/www/客户端可以访问所有内容。因此,如果我在安装 Apache 之前在该目录中有任何封闭源代码服务器端脚本或其他秘密信息,那么在我更改 Apache 配置并重新启动 Apache 或直到我停止 Apache 之前,它都是可公开访问的。
我可以做这个
sudo apt-get install -y apache2
sudo service apache2 stop
# Finish setting up...
Run Code Online (Sandbox Code Playgroud)
然后只有一个简短的窗口可以访问秘密内容,但最好让 Apache 完全不自动启动,/var/www/甚至一刻也不暴露。
是否有任何我可以传递的选项apt-get install或其他方法来防止 Apache 在安装后自动启动?
我在使用 vagrant 设置 NFS 时遇到问题:
在我的本地机器上,我安装了 NFS:
apt-get install nfs-common nfs-kernel-server
Run Code Online (Sandbox Code Playgroud)
在我的 Vagrantfile 中将其设置为使用:
config.vm.share_folder("v-root", "/vagrant", ".", :nfs => true)
Run Code Online (Sandbox Code Playgroud)
在vagrant up我得到:
exportfs: /home/<user>/path/to/dir does not support NFS export
Mounting NFS shared folders failed. This is most often caused by the NFS
client software not being installed on the guest machine. Please verify
that the NFS client software is properly installed, and consult any resources
specific to the linux distro you're using for more information on how to …Run Code Online (Sandbox Code Playgroud) 我有通过 Vagrant 访问的 ubuntu 虚拟机。在我的主机 (Mac OSX) 上,有一个包含几个文件的文件夹,我将这些文件共享给虚拟机。在那个虚拟机中,我想使用guard来监视文件更改并在这些文件中的任何一个发生更改时执行一些操作。
我正确设置了警卫,当从虚拟机中更改共享文件时,它可以正常工作并运行适当的脚本。但是,如果我尝试从我的主机更改共享文件,则此文件更改事件不会传播并且防护不会做出反应。
这就是我的 vagrant 共享文件夹的样子(非常常见的东西)
local_config.vm.share_folder "app", "/var/www/app/current", "../app"
Run Code Online (Sandbox Code Playgroud)
我什至尝试使用 NFS 共享 ( :nfs => true) 但它没有帮助。
有没有办法让文件更改事件从主机传播到虚拟机?或者这是 Vagrant/VirtualBox 的本质?
更新:
经过更多的试验,我安装了ZenTest gem,它包含自动测试工具,允许有关文件更改事件的类似功能。
在虚拟机中运行自动测试并从我的主机更改文件时,这些更改会传播并自动测试做出反应。
基于此,似乎文件更改事件传播是保护问题,而不是流浪者或虚拟框。
不过,我还没有研究保护和自动测试之间的实现差异。
现在我知道可以从虚拟机中的主机捕获文件更改事件。有没有人知道如何使用守卫实现这一目标?我更喜欢guard,因为它的DSL 和通用的可用性。
filesystems virtual-machines file-sharing virtualbox vagrant
我有一台装有 Ubuntu 12.04、Virtualbox 4.3 和 Vagrant 1.5.1 的服务器。我正在尝试使用这个框http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210.box但是没有成功。当我运行“vagrant up”时,我收到以下消息:
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos-64-x64-vbox4210'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: rafael_default_1396403974194_51967
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 nginx 代理传递给两个 docker 容器。这是我的上游 conf 文件:
upstream api_servers {
server http://192.168.49.4:49155;
server http://192.168.49.4:49156;
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试加载它的内容:
nginx: [emerg] invalid host in upstream "http://192.168.49.4:49155" in /etc/nginx/conf.d/api_upstream.conf:3
nginx: configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)
一旦我删除了 http:// 前缀,错误就会停止发生。这是为什么?
我有一个带有 1 个以太网卡和 2 个公共静态 IP(188.120.245.4 和 188.120.244.5)的服务器(Debian Squeeze)。
我想要什么:通过静态 IP (188.120.244.5) 访问设置虚拟框 (Ubuntu)。
我在尝试什么:
我现在拥有的是:不工作的配置。
Debian-host-machine# cat Vagrantfile
Vagrant::Config.run do |config|
config.vm.define :gitlab do |box_config|
box_config.vm.box = "ubuntu"
box_config.vm.host_name = "ubuntu"
box_config.vm.network :bridged
box_config.vm.network :hostonly, "188.120.244.5", :auto_config => false
end
end
Debian-host-machine# ifconfig
eth1 Link encap:Ethernet HWaddr 00:15:17:69:71:bb
inet addr:188.120.245.4 Bcast:188.120.247.255 Mask:255.255.248.0
lo Link …Run Code Online (Sandbox Code Playgroud) 本地 Vagrant 机器安装在10.0.0.23主机名的IP 地址上lamp-vm。
使用vagrant ssh命令,我可以正常连接并做我需要的一切。
这会产生错误
$ ssh vagrant@lamp-vm -v -v
debug1:连接到地址 10.0.0.23 端口 22:连接超时
ssh:连接到主机 lamp-vm 端口 22:连接超时
我的/etc/hosts文件包含10.0.0.23 lamp-vm.
我的 .ssh/config 文件看起来像
主机 lamp-vm
用户 vagrant
IdentityFile ~/.ssh/vagrant
我也尝试过使用和不使用 ssh 命令-i /path/to/.sh/identity_file。
如何使用 SSH 连接到我的 Vagrant 虚拟机?
从 shell 脚本更改 my.cnf 中的 mysql 绑定地址的最佳方法是什么?有没有办法使用像 mysqladmin 这样的工具,或者我应该使用 sed 还是我应该简单地将它附加到 my.cnf 并希望第二个条目覆盖第一个条目(这听起来很恶心)。我尝试为 vagrant 编写一个简单的 shell 配置器,它在安装 mysql-server 后运行,以允许来自 vm 外部的连接。
我已经使用 Vagrant (www.vagrantup.com) 设置了一个本地虚拟机 (ubuntu 12.4),并且需要在我的本地 wifi 网络上共享其资源。它基本上运行一个网络服务器,本地网络上的其他机器应该可以访问它。
我的本地 wifi 适配器从路由器获取动态 IP 地址。
我当前的配置如下所示,但我无法使用 IP 从另一台机器访问该机器:
config.vm.network :private_network, ip: "192.168.56.101"
config.vm.network :forwarded_port, guest: 80, host: 8080
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?任何帮助表示高度赞赏!
vagrant ×10
ubuntu ×3
ubuntu-12.04 ×3
linux ×2
virtualbox ×2
apache-2.2 ×1
centos ×1
file-sharing ×1
filesystems ×1
localhost ×1
mysql ×1
nat ×1
networking ×1
nfs ×1
nginx ×1
provisioning ×1
puppet ×1
routing ×1
shell ×1
ssh ×1