这是挑战:
使用 ansible,我需要将多个文件夹归档到一个 tar 文件中。该文件夹的格式为 yyyy-mm-dd。运行 ansible-playbook (--extra-var) 时,CLI 给出日期范围(即开始日期 = 2022-05-02 ,结束日期 = 2023-03-04 )。我创建了一个代码,但不知何故陷入了生成日期范围的困境。
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 }}"
你的脚本似乎按写的那样工作。使用最小的剧本:
如果我运行:
我从任务中得到以下输出
debug
: