使用Ansible,我希望能够将运行命令的任务的sysout写入本地(即,在受管服务器上)日志文件。 目前,我只能使用这样的任务来做到这一点:
- name: Run my command
shell: <command> <arg1> <arg3> ... |tee -a <local log file>
这样做的原因是需要花费很长时间才能完成(即,我们不能等到它完成获取其输出的时间),并且希望在执行期间收集输出。
在执行过程中,是否有任何“ Ansible”方法可以将命令的sysout重定向到本地日志文件,而无需使用tee
管道?
答案 0 :(得分:1)
不是100%会回答您的问题,因为您不会在管理器服务器中获得不断更新的文件,但可以使用async commands
# Requires ansible 1.8+
- name: 'YUM - async task'
yum:
name: docker-io
state: installed
async: 1000
poll: 0
register: yum_sleeper
- name: 'YUM - check on async task'
async_status:
jid: "{{ yum_sleeper.ansible_job_id }}"
register: job_result
until: job_result.finished
retries: 30
然后将yum_sleeper
的内容转储到文件中,
- name: save log locally
copy:
content: '{{ yum_sleeper.stdout }}'
dest: file.log
delegate_to: localhost