Имеется задача по созданию архива, в имени которого хочется добавлять дату и время его создания.
Для получения даты-времени можно использовать ansible_date_time
.
Проверяем.
Добавлем задачу, которая выведет всё содержимое:
- name: Test date debug: msg: "{{ ansible_date_time }}"
Запускаем:
[simterm]
$ ansible-playbook -i hosts.ini --tags test --limit mobilebackend-dev mobilebackend.yml --extra-vars "ansible_connection=local" PLAY [all] **** TASK [Gathering Facts] **** ok: [dev.mobilebackend.domain.world] TASK [test : Test date] **** ok: [dev.mobilebackend.domain.world] => { "msg": { "date": "2018-07-11", "day": "11", "epoch": "1531319553", "hour": "17", "iso8601": "2018-07-11T14:32:33Z", "iso8601_basic": "20180711T173233946920", "iso8601_basic_short": "20180711T173233", "iso8601_micro": "2018-07-11T14:32:33.946988Z", "minute": "32", "month": "07", "second": "33", "time": "17:32:33", "tz": "EEST", "tz_offset": "+0300", "weekday": "Wednesday", "weekday_number": "3", "weeknumber": "28", "year": "2018" } }
[/simterm]
Теперь – попробуем получить отдельные значения, например date
:
- name: Test date debug: msg: "{{ ansible_date_time.date }}"
Запускаем:
[simterm]
... TASK [test : Test date] **** ok: [dev.mobilebackend.domain.world] => { "msg": "2018-07-11" } ...
[/simterm]
Попробуем скомибинировать:
- name: Test date debug: msg: "Filename will be: backupname-{{ ansible_date_time.date }}-{{ ansible_date_time.hour }}-{{ ansible_date_time.minute }}.tar"
Проверяем:
[simterm]
... TASK [test : Test date] **** ok: [dev.mobilebackend.domain.world] => { "msg": "Filename will be: backupname-2018-07-11-17-36.tar" } ...
[/simterm]
Можно вынести дату-время в отдельную переменную, используя set_fact
:
- set_fact: bkp_date_time: "{{ ansible_date_time.date }}-{{ ansible_date_time.hour }}-{{ ansible_date_time.minute }}" - name: Test date debug: msg: "Filename will be: backupname-{{ bkp_date_time }}.tar"
Запускаем:
[simterm]
... TASK [test : set_fact] **** ok: [dev.mobilebackend.domain.world] TASK [test : Test date] **** ok: [dev.mobilebackend.domain.world] => { "msg": "Filename will be: backupname-2018-07-11-17-39.tar" } ...
[/simterm]
И ещё один вариант – это получить дату-время через pipe из шела:
... - name: Date from $(date) execution via pipe debug: msg: "Date-time: {{ lookup('pipe','date +%Y-%m-%d-%H-%M-%S') }}"
Результат:
[simterm]
... TASK [test : Date from $(date) execution via pipe] **** ok: [dev.mobilebackend.domain.world] => { "msg": "Date-time: 2018-07-11-17-40-58" } ...
[/simterm]
Готово.