如何在ansible日志文件中附加日期,时间戳?

时间:2016-09-12 17:18:48

标签: ansible

如何在ansible日志文件中附加日期,时间戳? 目前我把它作为ansible.cfg中的log_path = / var / ansible-playbooks / ansible.log

每次运行时,我都需要将此日志文件保存为时间戳

示例ansible-20160808142400.log

2 个答案:

答案 0 :(得分:1)

如果您在基于UNIX的系统上运行,则可以利用inode的行为。在ansible.cfg中定义日志路径。我在$ HOME / .ansible。

中创建了一个目录
log_path = $HOME/.ansible/log/ansible.log

在您的剧本中创建一个任务前部分,并包含以下任务:

- name: Create the log file for this run
  shell: /bin/bash -l -c "mv {{ lookup('env', 'HOME') }}/.ansible/log/ansible.log  {{ lookup('env', 'HOME') }}/.ansible/log/ansible.log-{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"
  delegate_to: localhost
  become: yes
  become_user: "{{ lookup('env', 'USER') }}"

当ansible开始运行一个playbook时,它会创建日志文件并开始写入它。然后将日志文件重命名为ansible.log -YYYYmmddHHMMSS,并且ansible进程继续写入它,因为即使日志文件的名称已更改,与其关联的inode也没有。

答案 1 :(得分:0)

使用ANSIBLE_LOG_PATH环境变量 执行playbook如下:

ANSIBLE_LOG_PATH=/tmp/ansible_$(date "+%Y%m%d%H%M%S").log ansible-playbook myplabook.yml

或者,您可以编写自己的回调插件,记录您想要的内容以及您想要的位置。