Имеется задача по созданию архива, в имени которого хочется добавлять дату и время его создания.
Для получения даты-времени можно использовать 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]
Готово.