Comment ajouter de temps pour le timestamp actuel dans Ansible?

0

La question

Je cherche à automatiser quelques tâches dans Ansible et alors que j'ai obtenu tout ce travail, j'ai besoin d'avoir un start_time et end_time variable qui ajoute le temps à l'horodatage actuel comme le ServiceNow système n'accepte pas un timestamp actuel lors de la création d'une demande de modification.

Par exemple, j'ai une variable start_time comme "{{ lookup('pipe', date +\"%Y-%m-%d %r\"') }}" mais j'aurais besoin qu'à l'heure actuelle +5 minutes par exemple. De même sur le end_date, mais quelque chose comme +15 minutes.

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

La meilleure réponse

2

Quelque chose comme?

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

C'est également très bon, je vous remercie!
oakenshield
1

Si vous allez utiliser lookup_plugins et pipe, vous pouvez juste ajouter 5 minutes en utilisant date +"%Y-%m-%d %r" -d "5 mins".

Grâce à

Néanmoins, il est recommander d'utiliser des variables comme l'Ansible ansible_date_time à partir de faits.

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'

Formulaire de là, vous pouvez l'utiliser epoch, minute ou ce qui pourrait s'adapter à votre cas d'utilisation.

2021-11-23 14:50:21

J'ai réussi à obtenir le temps ajouté à l'aide de date +"%Y-%m-%d %r" -d "+5 minutes" cependant j'aimerais réaliser cela à l'aide d'un fichier de variable au lieu d'avoir à exécuter la commande dans chaque playbook et le stockage de la variable.
oakenshield

S'avère que vous avez stocké comme une variable comme "{{ lookup('pipe', 'date -d \"+5 minutes\" +\"%Y%m%d %r\"') }}"
oakenshield
0

Vous pouvez utiliser l' strftime filtre à format fois, Ansible intégré de collecte des faits pour obtenir l'heure actuelle, et un peu d'arithmétique d'ajouter 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

C'est très bon, merci!
oakenshield

Dans d'autres langues

Cette page est dans d'autres langues

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