我尝试使用 Ansible 备份我的服务器。我的设置如下:
SERVER 1..n
(我想要备份的数据)
ANSIBLE_HOST
(在此服务器上,我的 Ansible 备份剧本由 cron 作业执行)
BACKUP_STORE
(在此服务器上存储了我的备份)
现在我尝试使用 netcat 将文件发送SERVER x
到BACKUP_STORE
我的 Ansible 任务,如下所示:
- shell: >
nc -l {{ port }} > {{ backup_file }}.tar.bz2
async: 1000
poll: 0
register: receiver
delegate_to: "{{ BACKUP_STORE_IP }}"
- shell: >
tar -cvpj --one-file-system {{ folder }} | nc -q 0 {{ BACKUP_STORE_IP }} {{ port }}
- async_status:
jid: "{{ receiver }}"
register: job_result
until: job_result.finished
retries: 30
delegate_to: "{{ BACKUP_STORE_IP }}"
当我自己在两台服务器上执行 shell 命令时,这 100% 的时间都有效。但是如果我用这个 Ansible 脚本运行它们,大约 50% 的时间BACKUP_STORE
会创建备份文件,但它是空的(0 字节)。
通过 Ansible 运行时数据无法传输的原因可能是什么?或者还有其他方法,发送文件而不在文件系统上写入存档SERVER x
?