ansible_date_time
- это факт, доступный на любой машине, где вы собрали факты.
$ ansible localhost -m setup -a filter=ansible_date_time
localhost | SUCCESS => {
"ansible_facts": {
"ansible_date_time": {
"date": "2020-01-24",
"day": "24",
"epoch": "1579835473",
"hour": "04",
"iso8601": "2020-01-24T03:11:13Z",
"iso8601_basic": "20200124T041113893686",
"iso8601_basic_short": "20200124T041113",
"iso8601_micro": "2020-01-24T03:11:13.893763Z",
"minute": "11",
"month": "01",
"second": "13",
"time": "04:11:13",
"tz": "CET",
"tz_offset": "+0100",
"weekday": "vendredi",
"weekday_number": "5",
"weeknumber": "03",
"year": "2020"
}
},
"changed": false
}
Допустим, epoch
- ваш выбор метки времени, вы можете получить к нему доступ в любой строке шаблона jinja2 с помощью ansible_date_time.epoch
.
- name: My timestamp play
hosts: my_hosts
tasks:
- name: Show timestamp
debug:
msg: "Epoch on {{ inventory_hostname }} is {{ ansible_date_time.epoch }}"
Это будет содержать факт для вашей целевой машины, то есть информацию о дате и времени вашей цели в момент сбора фактов.
Если вы действительно хотите Информация о дате и времени от вашего локального хоста, вам необходимо убедиться, что вы собрали факты из localhost
. Достаточно простого пустого игрового таргетинга localhost
, как показано ниже, и затем вы можете использовать hostvars['localhost'].ansible_date_time.epoch
- name: Make sure we have localhost facts
hosts: localhost
- name: Rest of my playbook
hosts: my_hosts
tasks:
- name: Show timestamp from localhost for each target machine
debug:
msg: >-
ansible contoler's epoch is
{{ hostvars['localhost'].ansible_date_time.epoch }}
(displayed from {{ inventory_hostname }})