我在我的主机上有一个备份脚本。它正在创建一个文件,在其输出中指定:
********************************************************************************
Configuration files backup successfully.
Backup file is put to /root/backup_201409111318.tar.
********************************************************************************
如何将该文件复制到ansible服务器,以便以后还原它?有没有办法解析shell /命令任务的输出然后对该文件进行提取?也许使用脚本模块?
值得注意的是,我不能只从服务器“获取”文件(而不是使用备份脚本),因为脚本正在执行一些额外的任务来创建备份。
提前致谢, 伊格纳西奥。
答案 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