2017-03-27 20 views
0

我正在爲健康檢查目的設置一個可靠的腳本。在Mongo DB CLI中使用Ansible發送命令

我想在登錄到mongo db admin cli後運行rs.status()命令。

--- 
- name: Perform Health Checks. 
    hosts: mongodb 
    tasks: 
    - name: Check MongoDB nodes. 
     shell: mongo admin -u root -p root ; rs.status() 
     register: output 

    - debug: msg={{ output.stdout_lines }} 

命令rs.status()只能在mongodb管理控制檯中運行一次。

但使用shell模塊運行上述劇本給了我一個錯誤。

TASK [Check MongoDB nodes.] ************************************************** 
fatal: [172.29.219.107]: FAILED! => {"changed": true, "cmd": "mongo admin -u root -p root ; rs.status()", "delta": "0:00:00.002825", "end": "2017-03-27 13:26:45.211397", "failed": true, "rc": 1, "start": "2017-03-27 13:26:45.208572", "stderr": "/bin/sh: -c: line 1: syntax error: unexpected end of file", "stdout": "", "stdout_lines": [], "warnings": []} 
fatal: [172.29.219.106]: FAILED! => {"changed": true, "cmd": "mongo admin -u root -p root ; rs.status()", "delta": "0:00:00.002906", "end": "2017-03-27 13:26:47.486562", "failed": true, "rc": 1, "start": "2017-03-27 13:26:47.483656", "stderr": "/bin/sh: -c: line 1: syntax error: unexpected end of file", "stdout": "", "stdout_lines": [], "warnings": []} 

是否有使用Ansible辦法伊夫一次登錄到MongoDB的控制檯,我可以發送命令rs.status()

回答

0

可以使用--eval命令行參數rs.status()運行:如果需要

- name: Check MongoDB nodes. 
    shell: mongo admin --quiet --eval 'printjson(rs.status())' 
    register: output 

-u user-p pwd命令行參數可以被添加到命令行。