Eu tento fazer backup dos meus servidores com o Ansible. Minha configuração é assim:
SERVER 1..n
(my data I want to backup)ANSIBLE_HOST
(on this server my Ansible backup playbook is executed by a cron job)BACKUP_STORE
(on this server my backups are stored)
Agora eu tento enviar os arquivos com o netcat de SERVER x
para as tarefas BACKUP_STORE
my Ansible da seguinte forma:
- 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 }}"
Quando executo os comandos shell nos dois servidores, isso funciona 100% do tempo. Mas se eu executá-los com este script Ansible, cerca de 50% do tempo o arquivo de backup em BACKUP_STORE
é criado, mas está vazio (0 bytes).
Qual poderia ser a razão pela qual os dados não são transmitidos quando isso é executado através do Ansible? Ou existe algum outro método, enviando o arquivo sem escrever o arquivo no sistema de arquivos de SERVER x
?