【问题标题】:How to append date, timestamp in the ansible log file?如何在 ansible 日志文件中附加日期、时间戳?
【发布时间】:2017-04-25 06:02:14
【问题描述】:

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

每次我运行时,我都需要将此日志与时间戳一起保存到文件中

示例 ansible-20160808142400.log

【问题讨论】:

    标签: ansible


    【解决方案1】:

    使用 ANSIBLE_LOG_PATH 环境变量。
    执行剧本如下:

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

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

    【讨论】:

      【解决方案2】:

      如果您在基于 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 也没有更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        • 2012-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多