配置时拒绝了流浪卷曲连接

时间:2016-05-05 09:04:15

标签: vagrant couchdb

我在Vagrant盒子上运行CouchDB。我想在配置框时创建数据库。要创建数据库,我使用curl将PUT设置为127.0.0.1:5984/foo。如果我手动执行此操作,没问题。 SSH进入Vagrant框并运行命令有效。在主机上运行命令有效。但是如果我有配置脚本运行命令,我会收到此错误:curl: (7) Failed to connect to 127.0.0.1 port 5984: Connection refused。有什么问题?

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.network "forwarded_port", guest: 5984, host: 5984, host_ip: "127.0.0.1"
  config.vm.provision "shell", path: "./scripts/provision_vagrant.sh"
end

1 个答案:

答案 0 :(得分:1)

有两件事:

首先,当您在ssh进入框中后运行命令时,您将以vagrant用户身份运行命令,但是当您按照所示运行配置时,实际上以root身份运行命令;所以要尊重你在ssh时所做的事情,确保以privileged: false参数运行如下:

config.vm.provision "shell", privileged: false, path: "./scripts/provision_vagrant.sh"

在编写shell脚本时考虑这一点,就好像以root身份运行一样,不需要sudo

其次,当启动诸如couchdb之类的进程时,需要花费一些时间(几秒到一分钟,具体取决于硬件)才能完全启动并可用,这对于大多数进程(mysql,apache)都是完全正常的因此,当您从脚本运行curl时,它可能正在运行,而沙发正在启动但并非完全可用。

最简单的就是睡眠充足,以便服务器启动 - 最复杂的版本是读取输出日志文件,直到它说它已经启动。