Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Ansible剧本在mongoDB中创建收藏?_Mongodb_Vagrant_Ansible - Fatal编程技术网

如何使用Ansible剧本在mongoDB中创建收藏?

如何使用Ansible剧本在mongoDB中创建收藏?,mongodb,vagrant,ansible,Mongodb,Vagrant,Ansible,我正在使用Ansible配置一个Vagrant VM,它在Vagrant up上启动mongoDB,并创建一个数据库和集合,准备接收数据。另一个进程将向mongoDB集合写入数据。以下是剧本中的一个片段: - hosts: all user: vagrant sudo: True tasks: - name: install packages action: apt update_cache=yes pkg={{item}} state=installed

我正在使用Ansible配置一个Vagrant VM,它在
Vagrant up
上启动mongoDB,并创建一个数据库和集合,准备接收数据。另一个进程将向mongoDB集合写入数据。以下是剧本中的一个片段:

- hosts: all
  user: vagrant
  sudo: True

  tasks:
    - name: install packages
      action: apt update_cache=yes pkg={{item}} state=installed
      with_items:
        - mongodb

    - service: name=mongodb state=started

    - shell: mongo mydb --eval "db.createCollection('mycollection')"
playbook安装并启动mongoDB服务。但是,它不会创建数据库/集合。“
-shell:mongo…
”行有问题。它返回:

TASK: [shell mongo mydb --eval "db.createCollection('mycollection')"] **** 
failed: [default] => {"changed": true, "cmd": "mongo mydb --eval\"db.createCollection('mycollection')\" ", "delta": "0:00:00.084196", "end": "2014-08-29 04:48:40.333460", "rc": 255, "start": "2014-08-29 04:48:40.249264"}
stderr: exception: connect failed
stdout: MongoDB shell version: 2.0.4
connecting to: mydb
Fri Aug 29 04:48:40 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84

你能看出我做错了什么吗?

你的方法应该是正确的。我刚刚在安装了mongo的vagrant引导实例上测试了您的mongo线路,它运行良好

你能检查一下mongo日志看看它在抱怨什么吗?如果您无法连接,可能是mongo服务绑定到ipv6地址,绑定到错误的端口(应该是27017),或者是一些身份验证问题

检查后,您是否可以启动机器,进入外壳,然后执行此位:

mongo mydb--eval“db.createCollection('mycollection')”


它是从外壳开始工作的吗?(以与Ansible相同的用户身份运行)。

谢谢@tmrus。当以Ansible使用的同一用户身份登录时,它确实可以在shell中工作。从剧本上看它不起作用。我不知道如何检查虚拟机上的日志,因为由于错误没有设置。@AlexWoolford可能我误解了-如果您能够从shell测试它,您应该能够访问mongo日志?其他一些建议:-确保您在mongo conf文件中有bind_ip=127.0.0.1(由您或ansible/provisioners放在那里)-有些人很幸运地删除了一个锁文件,但我怀疑这在您的案例中是个问题,因为它是一个流浪vm:根据您发送的链接,我添加了“-shell:sudo-rm/var/lib/mongodb/mongod.lock”和“-shell:sudo-u mongodb-mongod-f/etc/mongodb.conf-repair”最后,我发现一个简单的“-shell:sleep 10”也有同样的效果,因此我最终使用了它的简单性。mongodb服务似乎还没有准备好接收连接,即使它已经启动,短暂的延迟给了它足够的时间安定下来并接受连接。