Ansible任务写入本地日志文件

时间:2019-03-19 09:54:01

标签: linux shell ansible

使用Ansible,我希望能够将运行命令的任务的sysout写入本地(即,在受管服务器上)日志文件。 目前,我只能使用这样的任务来做到这一点:

- name: Run my command
  shell: <command> <arg1> <arg3> ... |tee -a <local log file>

这样做的原因是需要花费很长时间才能完成(即,我们不能等到它完成获取其输出的时间),并且希望在执行期间收集输出。

在执行过程中,是否有任何“ Ansible”方法可以将命令的sysout重定向到本地日志文件,而无需使用tee管道?

1 个答案:

答案 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