2016-05-05 11 views
0

バグのボックスでCouchDBを実行しています。ボックスをプロビジョニングするときにデータベースを作成します。 dbを作成するには、curlを使用してPUTを127.0.0.1:5984/fooにします。これを手動で行うと問題はありません。 VagrantボックスにSSH-ingし、コマンドを実行すると動作します。ホストマシン上でコマンドを実行すると動作します。プロビジョニングスクリプトでコマンドを実行すると、このエラーが発生します。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

あり2ことだ:

まず、あなたがボックスにssh'ing後にコマンドを実行したとき、あなたはvagrantユーザとしてコマンドを実行しますがいますが、プロビジョニングを実行するとき表示されているように、実際にはrootとしてコマンドを実行します。次のようにprivileged: false引数を指定して実行することを確認してくださいssh'ingときに、あなたが何をしたか尊重する:rootとして実行する場合のように、あなたのシェルスクリプトを書くとき

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

はこのことを考慮し、あなたはsudo

を必要といけません

第2に、couchdbのようなプロセスを起動すると、ハードウェアに応じて数秒(ハードウェアに応じて数分から数秒かかる)で完全に起動して利用できるようになります。これは大部分のプロセス(mysql、apache)あなたのスクリプトからcurlを実行すると、ソファが起動していて完全に利用可能ではない間に実行されている可能性があります。

最も簡単なのは、サーバーが起動するように十分にスリープすることです。最も洗練されたバージョンは、開始されるまで出力ログファイルを読み取ることです。

+0

ご返信ありがとうございます。残念ながら、迷路としてのプロビジョニングは同じ結果をもたらします。 – maxhallinan

+0

プロビジョニングの実行時にcouchdbサービスが5984で実行されていることを確認してください。 –

+0

実行中ではありません。私は 'sudo stop couchdb'を実行し、設定ファイルを変更してから' sudo start couchdb'を実行します。しかし、 'netstat -tulpn'を実行すると、':5984'のプロセスは表示されません。 – maxhallinan

関連する問題