我们目前正在使用厨师来配置我们的服务器,并且我们希望我们的食谱/食谱本在mongo数据库安装并运行后自动添加一些数据。在mongodb启动后获得厨师执行mongodb脚本
这是我们开始遇到问题的地方。我们使用的执行资源来运行蒙戈这样的脚本:
execute "install-mongodb-config" do
command "mongo #{node[:mongodb][:mongo_db_host]}/#{node[:mongodb][:mongo_db]} \"#{node[:mongodb][:mongo_add_config_script]}\""
action :run
end
配方的这部分总是失败不管我们尽力了!我不会详细介绍我们在这里尝试的所有内容(除非我需要),但让我只说我已经用尽了所有可能的订阅并通知(我认为)。
该问题源于我们使用mongodb :: 10gen_repo安装mongodb的事实。当apt-get安装包时,配方会退出,然后厨师继续执行更多资源。
我们已经尝试过在mongodb :: 10gen_repo之后直接执行上述资源,但似乎没有mongodb可用,并且mongo shell无法连接并运行脚本。我们看到的错误是有点像这样:
MongoDB shell version: 2.0.2
Thu Sep 6 18:40:45 ReferenceError: setTimeout is not defined mongotest.js:2
failed to load: mongoAddConfig.js
没有我们曾试图已经能够解决这个问题一个很好的厨师方式。我们使出的事情是替换为下面的执行资源:
execute "install-mongodb-config" do
command "sleep 60; mongo #{node[:mongodb][:mongo_db_host]}/#{node[:mongodb][:mongo_db]} \"#{node[:mongodb][:mongo_add_config_script]}\""
action :run
end
这只是让60秒的命令睡眠运行蒙戈脚本之前。我知道这不是正确方式做到这一点,但它现在的作品。
任何人都可以提出正确的方法来做到这一点?我有一种感觉,我需要与创建mongodb厨师脚本并请求功能的人交谈!
好吧,似乎越来越接近我所需要的。我明白,使用connectTimeoutMS参数似乎是一个很好的方法,但我的问题是,我似乎无法连接在mongo交互式shell上使用该连接字符串方法。有任何想法吗? –
您可以显示您运行的命令的输出以及返回消息的内容吗? – ChadsworthIII