Vagrant curl 连接在配置时被拒绝
Vagrant curl connection refused while provisioning
我在 Vagrant 盒子上安装了 CouchDB 运行ning。我想在配置盒子时创建数据库。为了创建数据库,我使用 curl 将 PUT
设为 127.0.0.1:5984/foo。如果我手动执行此操作,没问题。 SSH-ing 进入 Vagrant 框并 运行ning 命令工作。 运行 主机上的命令有效。但是,如果我有配置脚本 运行 命令,我会收到此错误: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
有两件事:
首先,当您 运行 在 ssh 进入该框后执行命令时,您将 运行 作为 vagrant
用户执行该命令,但是当您 运行 您的按照您实际显示的方式进行配置 运行 作为 root 的命令;因此,为了尊重您在 ssh 时所做的事情,请确保 运行 和 privileged: false
参数如下:
config.vm.provision "shell", privileged: false, path: "./scripts/provision_vagrant.sh"
在编写 shell 脚本时请考虑这一点,就好像您 运行 是根用户一样,您不需要 sudo
其次,当启动诸如 couchdb 之类的进程时,需要一些时间(几秒到一分钟,具体取决于硬件)才能完全启动并可用,这完全没问题,而且对于大多数进程来说都是一样的(mysql, apache) 所以当从你的脚本 运行ning curl
时它可能是 运行ning 而沙发正在启动并且不完全可用。
最简单的方法是睡眠到足以让服务器启动 - 最复杂的版本是读取输出日志文件,直到它说它已经启动。
我在 Vagrant 盒子上安装了 CouchDB 运行ning。我想在配置盒子时创建数据库。为了创建数据库,我使用 curl 将 PUT
设为 127.0.0.1:5984/foo。如果我手动执行此操作,没问题。 SSH-ing 进入 Vagrant 框并 运行ning 命令工作。 运行 主机上的命令有效。但是,如果我有配置脚本 运行 命令,我会收到此错误: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
有两件事:
首先,当您 运行 在 ssh 进入该框后执行命令时,您将 运行 作为 vagrant
用户执行该命令,但是当您 运行 您的按照您实际显示的方式进行配置 运行 作为 root 的命令;因此,为了尊重您在 ssh 时所做的事情,请确保 运行 和 privileged: false
参数如下:
config.vm.provision "shell", privileged: false, path: "./scripts/provision_vagrant.sh"
在编写 shell 脚本时请考虑这一点,就好像您 运行 是根用户一样,您不需要 sudo
其次,当启动诸如 couchdb 之类的进程时,需要一些时间(几秒到一分钟,具体取决于硬件)才能完全启动并可用,这完全没问题,而且对于大多数进程来说都是一样的(mysql, apache) 所以当从你的脚本 运行ning curl
时它可能是 运行ning 而沙发正在启动并且不完全可用。
最简单的方法是睡眠到足以让服务器启动 - 最复杂的版本是读取输出日志文件,直到它说它已经启动。