【发布时间】:2017-02-27 08:42:40
【问题描述】:
仍在学习@Ansible。正在尝试自动执行 MongoDB 恢复。
我有三台运行 MongoDB 的服务器。恢复后,可以通过 shell 命令输出 MongoDB 服务器的状态(见下文)。
我希望 Ansible 做的是在输出中 10 分钟后出现字符串“lastHeartbeatMessage”时执行一项任务。
- name: Register MongoDB sync status
shell: mongo --eval "printjson(rs.status())"
register: mongoReplInfo
- debug: var=mongoReplInfo
- name: Copy rs.status to local log
local_action: copy content={{ mongoReplInfo }} dest=/tmp/mongoStatus
- name: Copy rs.status to server
copy: src=/tmp/mongoStatus dest=/tmp/mongoStatus
- name: Check if slave is still syncing
wait_for: path=/tmp/mongoStatus search_regex=lastHeartbeatMessage
- name: Succesfull sync
shell: 'run_succesfull_command'
when: lastHeartbeatMessage is absent after 10 min
- name: Failed sync
shell: 'run_succesfull_command'
when: lastHeartbeatMessage is present after 10 min
现在我正在使用 wait_for。但是状态只写入文件一次,并且不会更新。我应该使用哪个模块来重复将rs.status 输出到服务器的任务?
还是我把这本剧本弄错了?
【问题讨论】: