2014-08-29 2 views
0

Я использую Ansible для настройки Vagrant VM, который на vagrant up запускает mongoDB и создает базу данных и коллекцию, готовые для получения данных. Другой процесс будет записывать данные в коллекцию mongoDB. Вот отрывок из сборника пьес:Как создать коллекцию в mongoDB с помощью Ansible playbook?

- 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')" 

пьес устанавливает и запускает службу 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 

Вы видите, что я сделал неправильно?

ответ

0

Ваш подход должен быть правильным. Я только что проверил вашу линию манго на бродячем загруженном экземпляре с установленным монго, и он отлично работал.

Можете ли вы проверить журналы манго, чтобы узнать, о чем он жалуется? Если вы не можете подключиться, возможно, что служба mongo является обязательной для ipv6 addr, привязка к неправильному порту (должна быть 27017) или их некоторые проблемы с проверкой подлинности.

После проверки, вы можете загрузить машину, получить на корпусе, а затем выполнить этот бит:

Монго MYDB --eval "db.createCollection ('MyCollection')"

это работает из оболочки? (запускается как тот же пользователь, что и Ansible).

+0

Спасибо @tmruss. Он работает с оболочкой при входе в систему как тот же пользователь, что и Ansible. Это не работает из учебника. Я не уверен, как проверить журналы на виртуальной машине, потому что она не была обеспечена из-за ошибки. –

+0

@AlexWoolford, может быть, я не понимаю - если вы можете протестировать его из оболочки, вы должны иметь доступ к журналам mongo? – tmruss

+1

Несколько других предложений: - Убедитесь, что у вас есть bind_ip = 127.0.0.1 в файле конфига mongo (помещается туда вами или недоступным/Providers) - Некоторым людям повезло удалить файл блокировки, но я сомневаюсь, что это проблема в вашем случае, так как она является бродягой vm: http://stackoverflow.com/questions/5726032/ – tmruss

Смежные вопросы