aqui está o desafio:
usando ansible, preciso arquivar várias pastas em um arquivo tar. A pasta está no formato aaaa-mm-dd. Um intervalo de datas (ou seja, data de início = 2022-05-02 , data de término = 2023-03-04) é fornecido pela CLI durante a execução do ansible-playbook (--extra-var). Criei um código, mas de alguma forma não consigo gerar os intervalos de datas.
hosts: date-server
tasks:
- name: Receive Start and End Date by CLI
set_fact:
start_date: "{{ ansible_playbook_python }} -c 'import sys; print(sys.argv[1])'"
end_date: "{{ ansible_playbook_python }} -c 'import sys; print(sys.argv[2])'"
- name: Generate dates for the given range
shell: |
#!/bin/bash
d={{ start_date }}
while [ "$d" != "{{ end_date }}" ]; do
echo $d
d=$(date -I -d "$d + 1 day")
done
echo {{ end_date }}
register: dates
- name: Archive folders of each date generated date
shell:
cmd: tar -cf /tmp/dates.tar /data/report/{{ item }}
loop: "{{ dates.stdout_lines }}"
Seu script parece funcionar conforme escrito. Usando um manual mínimo:
Se eu correr:
Recebo a seguinte saída da
debug
tarefa: