Ansible
Ansible - 將找到的文件的 mtime 轉換為 YYYY-MM-DD 格式
我正在使用 Ansible 查找、壓縮和重命名日誌文件,並希望重命名壓縮日誌,並在其名稱後附加時間戳 (mtime),如下所示:
log.log
—>log-2021-07-06.log
。Ansible 讓我以以下格式提取 mtime:
log.log
—>log-1575048603.1364305.log
find
我使用模組查找日誌:- name: Locate Logs find: paths: /some/path file_type: file recurse: yes patterns: '*some-log-pattern.log*' age_stamp: mtime register: found_logs
並像這樣顯示 Ansible 找到的 mtime:
- name: Show found mtime debug: msg: "Will rename {{ item.path | basename }}.gz to {{item.path | basename}}-{{ item.mtime }}.gz" with_items: "{{ found_logs.files }}"
這給了我上面提到的格式。
有沒有辦法把Ansible的格式轉成標準
YYYY-MM-DD
格式,如上圖?我遇到了許多類似的問題,以及 Ansible Docs ( https://docs.ansible.com/ansible/devel/user_guide/playbooks_filters.html#handling-dates-and-times ),但一直沒有成功遠的。
任何幫助將不勝感激。
謝謝!
問:“查找並重命名(壓縮)日誌文件。 ”
答:使用過濾器strftime。請參閱處理日期和時間。例如,給定壓縮文件
shell> ls -1 some/path/ logA.log.gz logB.log.gz
任務
- name: Locate Logs find: paths: some/path file_type: file recurse: yes patterns: 'log*' age_stamp: mtime register: found_logs - name: Show found mtime debug: msg: "Rename {{ item.path }} to {{ _arr.0 }}.{{ _arr.1 }}-{{ _date }}.{{ _arr.2 }}" loop: "{{ found_logs.files }}" loop_control: label: "{{ item.path }}" vars: _arr: "{{ item.path.split('.') }}" _name: "{{ _arr.0 }}" _ext1: "{{ _arr.1 }}" _ext2: "{{ _arr.2 }}" _date: "{{ '%Y-%m-%d'|strftime(item.mtime) }}"
給
msg: Rename some/path/logB.log.gz to some/path/logB.log-2021-07-06.gz msg: Rename some/path/logA.log.gz to some/path/logA.log-2021-07-06.gz