Ansible cronjob-向文件名添加时间戳

Ansible cronjob-向文件名添加时间戳,cron,ansible,timestamp,Cron,Ansible,Timestamp,我正在尝试编写一个Ansible任务,它每天备份数据库,并为文件名添加时间戳 - name: Run cronjob to backup database. become_user: postgres cron: name: "Export database" special_time: daily job: pg_dump -U db_user -W -F t db_name > filename.tar 我试图简单地将$(日期+%Y

我正在尝试编写一个Ansible任务,它每天备份数据库,并为文件名添加时间戳

- name: Run cronjob to backup database.
  become_user: postgres
  cron:
    name: "Export database"
    special_time: daily
    job: pg_dump -U db_user -W -F t db_name > filename.tar
我试图简单地将$(日期+%Y-%m-%d-%H.%m.%S)附加到filename.tar,例如

filename-$(date +%Y-%m-%d-%H.%M.%S).tar
但是,这不起作用,因为当任务运行时,日期的值只设置一次,导致每个文件名都有一个ansible任务运行时的时间戳


我正在寻找解决这个问题的方法,并允许此作业为每个文件名生成新的时间戳。

通常,我们有一种创建shell脚本来处理数据库备份的做法。这使我们能够捕获退出代码,并相应地记录/发送警报

虽然只需一个
pg_dump
命令即可实现简单的功能,但应该可以实现以下类似功能:

例如:

db backup.sh

#/bin/bash
DB_USER=“dbuser”
DB_PASSWORD=“dbpassword”
DB\u NAME=“DB\u NAME”
BACKUP\u FILE=“db BACKUP-$(日期+%Y-%m-%d-%H.%m.%S).tar”
cmd=“pg_dump-U${DB_USER}-W-F t${DB_NAME}>${BACKUP_FILE}”
如果$cmd;然后
#做点什么
其他的
#做点别的
fi
然后在Ansible中,将此脚本复制到目标,并创建
cron
作业以运行此脚本

#例如复制到临时目录
-名称:复制数据库备份脚本
副本:
src:'db backup.sh'
dest:“/tmp/db backup.sh”
模式:“0755”
所有者:“博士后”
组:'博士后'
-名称:运行cronjob备份数据库
成为用户:postgres
克朗:
名称:“导出数据库”
特别时间:“每日”
作业:'/tmp/db backup.sh'