Come aggiungere il tempo per il timestamp corrente in Ansible?

0

Domanda

Sto cercando di automatizzare alcuni compiti in Ansible e mentre ho ottenuto tutto il resto per lavoro, ho bisogno di avere un start_time e end_time variabile che aggiunge tempo al timestamp corrente come ServiceNow sistema non accetta un timestamp corrente durante la creazione di una richiesta di cambiamento.

Per esempio, ho una variabile start_time come "{{ lookup('pipe', date +\"%Y-%m-%d %r\"') }}" ma avrei bisogno che questo sia il momento attuale +5 minuti per esempio. Allo stesso modo il end_date, ma qualcosa di simile a +15 minuti.

ansible jinja2
2021-11-23 13:22:47
3

Migliore risposta

2

Qualcosa di simile?

{{ ansible_date_time.date }}
{{ ansible_date_time.hour|int +1|int }}
{{ ansible_date_time.minute|int +15|int }}
2021-11-23 15:18:12

Questo è anche molto buono, grazie!
oakenshield
1

Se avete intenzione di utilizzare lookup_plugins e pipesi può solo aggiungere 5 minuti utilizzando date +"%Y-%m-%d %r" -d "5 mins".

Grazie a

Tuttavia, si raccomanda l'uso di variabili come l'Ansible ansible_date_time dai fatti.

date_time:
  date: '2021-11-23'
  day: '23'
  epoch: '1637678908'
  hour: '15'
  iso8601: '2021-11-23T14:48:28Z'
  iso8601_basic: 20211123T154828773386
  iso8601_basic_short: 20211123T154828
  iso8601_micro: '2021-11-23T14:48:28.773386Z'
  minute: '48'
  month: '11'
  second: '28'
  time: '15:48:28'
  tz: CET
  tz_offset: '+0100'
  weekday: Tuesday
  weekday_number: '2'
  weeknumber: '47'
  year: '2021'

Modulo ci si potrebbe utilizzare epoch, minute o quello che si adatta al vostro caso d'uso.

2021-11-23 14:50:21

Sono riuscito a ottenere il tempo ha aggiunto utilizzando date +"%Y-%m-%d %r" -d "+5 minutes" tuttavia vorrei ottenere questo utilizzando una variabile di file, invece di dover eseguire il comando in ogni playbook e memorizzare la variabile.
oakenshield

Si scopre che si può avere memorizzato come una variabile come "{{ lookup('pipe', 'date -d \"+5 minutes\" +\"%Y%m%d %r\"') }}"
oakenshield
0

È possibile utilizzare il strftime filtro per il formato di volte, Ansible built-in fatto di raccolta per ottenere l'ora corrente, e un po ' di aritmetica per aggiungere un offset.

- hosts: localhost
  tasks:
    - debug:
        msg:
          - "{{ '%Y-%m-%d %r' | strftime(ansible_facts.date_time.epoch | int + 300 ) }}"
          - "{{ '%Y-%m-%d %r' | strftime(ansible_facts.date_time.epoch | int + 900 ) }}"
TASK [debug] *******************************************************************
ok: [localhost] => {
    "msg": [
        "2021-11-23 01:10:45 PM",
        "2021-11-23 01:20:45 PM"
    ]
}
2021-11-23 14:41:37

Questo è molto buono, grazie!
oakenshield

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................