在Ansible中,如何动态设置日志文件名

Ick*_*won 12 ansible

我目前正在开发ansible脚本来构建和部署java项目.

所以,我可以像下面那样设置log_path

log_path=/var/log/ansible.log
Run Code Online (Sandbox Code Playgroud)

但是,很难查找构建历史记录.是否可以将日期时间附加到日志文件名?

例如,

ansible.20150326145515.log

jar*_*arv 15

我不相信有一种内置的方式可以像这样生成日期,但是你有一个选择就是使用一个可以在今天发布的查找.例:

log_path="/var/log/ansible.{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}.log"
Run Code Online (Sandbox Code Playgroud)

  • 这对你有用吗?对我来说,运行2.3.2.0,引号会被解释器转义,导致`log_path`无效; 甚至从未尝试执行查找. (2认同)
  • 抱歉,它创建名为 `ansible-log.{{ Lookup('pipe', 'date +%Y%m%d%H%M%S') }}.log` 的文件,而不是做一些有用的事情。在整个路径周围加上引号会使 ansible 向其附加“pwd”。 (2认同)
  • 这怎么有 17 票赞成?这是行不通的。刚刚在 Ansible 2.9.7 上尝试过。 (2认同)

Yve*_*tin 7

ANSIBLE_LOG_PATH由于 Bash shell 别名,这里有一个使用环境变量的选项:

alias ansible="ANSIBLE_LOG_PATH=ansible-\`date +%Y%m%d%H%M%S\`.log ansible"
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以随意使用绝对路径。


Ick*_*won 5

我找到了。

只需将任务添加到本地复制(或 mv 命令)日志

- name: Copy ansible.log
  connection: local
  command: mv ./logs/ansible.log ./logs/ansible.{{ lookup('pipe', 'date %Y%M%d%H%M%S') }}.log
  run_once: true
Run Code Online (Sandbox Code Playgroud)

感谢@jarv