Ansible:以格式name- <date> .tar </date>获取脚本创建的文件的名称

时间:2014-09-11 11:41:15

标签: backup ansible

我在我的主机上有一个备份脚本。它正在创建一个文件,在其输出中指定:

********************************************************************************
Configuration files backup successfully.
Backup file is put to /root/backup_201409111318.tar.
********************************************************************************

如何将该文件复制到ansible服务器,以便以后还原它?有没有办法解析shell /命令任务的输出然后对该文件进行提取?也许使用脚本模块?

值得注意的是,我不能只从服务器“获取”文件(而不是使用备份脚本),因为脚本正在执行一些额外的任务来创建备份。

提前致谢, 伊格纳西奥。

2 个答案:

答案 0 :(得分:0)

我能够通过为我的脚本创建一个包装器来实现这一点,该包装器只将文件名输出到stdout,然后在ansible上使用它:

 - name: Send backup script
   copy: src={{ item }} dest=/tmp owner=root group=root mode=744
   with_items:
       - backup.sh
       - backup_wraper.sh

 - name: Exec the script
   command: /tmp/backup_wraper.sh
   register: backup_path

 - name: Get the file
   fetch: src=/root/{{ backup_path.stdout }} dest=/tmp/{{ backup_path.stdout }} flat=yes

答案 1 :(得分:0)

您可以使用syncronize模块来完成此任务。您可以使用delete=No参数来确保保留多个版本的备份,但它们不会被删除。 此外,您可以在备份脚本中注册退出代码,并仅在有正确的退出代码时运行 syncronize 任务。

# Synchronization of src on delegate host to dest on the current inventory host
synchronize: >
    src=some/relative/path dest=/some/absolute/path delete=No mode=pull
    delegate_to: backup.host