我正在设置一个用于健康检查的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
模块运行上面的playbook会给我一个错误。
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 :(得分:0)
您可以使用rs.status()
命令行参数运行--eval
:
- name: Check MongoDB nodes.
shell: mongo admin --quiet --eval 'printjson(rs.status())'
register: output
如果需要,可以将 -u user
和-p pwd
命令行参数添加到命令行。