В ansible я хотел бы манипулировать файлами/каталогами/архивами, которые составлены или будут составлены следующим образом:
Как бы мне это сделать. Кажется, Ansible не может с этим справиться. (Я сомневаюсь). Так что я делаю не так?
Бывший:
- name: create file with a date in name
file: path=/path/somefile.`date +%y_%m_%d`
- name: unzip a file
unarchive: path=/path/zomezip.`date +%y_%m_%d`.tar.gz bla bla....
решение1
Установите переменную, а затем используйте ее с AnsibleСистема шаблонов Jinja2(похоже, вы пытаетесь сделать PHP с оператором точки и обратными кавычками)
vars:
date: "{{ lookup('pipe', 'date +%Y%m%d-%H%M') }}"
tasks:
- name: create file with a date in name
file: path="/path/somefile{{ date }}"
Или используйте сам поиск в шаблонах:
- name: create file with a date in name
file: path="/path/somefile{{ lookup('pipe', 'date +%Y%m%d-%H%M') }}"
решение2
Начиная с версии 2.4, вы также можете использовать strftime
фильтр (док):
# Display year-month-day
{{ '%Y-%m-%d' | strftime }}
# Display hour:min:sec
{{ '%H:%M:%S' | strftime }}
# Use ansible_date_time.epoch fact
{{ '%Y-%m-%d %H:%M:%S' | strftime(ansible_date_time.epoch) }}
# Use arbitrary epoch value
{{ '%Y-%m-%d' | strftime(0) }} # => 1970-01-01
решение3
Вы можете попробовать..
vars:
- a_timestamp: "{{ timestamp.stdout }}"
tasks:
- name: Get a timestamp
command: date +%Y%m%d%H%M%S
register: timestamp
затем добавьте переменную там, где это необходимо.