Ansible manipuliert Datei mit einem Datumsformat

Ansible manipuliert Datei mit einem Datumsformat

In Ansible möchte ich Dateien/Verzeichnisse/Archive manipulieren, die wie folgt zusammengesetzt sind oder zusammengesetzt werden sollen:

Wie würde ich das machen? Es scheint, dass Ansible damit nicht umgehen kann. (Das bezweifle ich). Was mache ich also falsch?

Ex:

- name: create file with a date in name
  file: path=/path/somefile.`date +%y_%m_%d`

- name: unzip a file
  unarchive: path=/path/zomezip.`date +%y_%m_%d`.tar.gz bla bla....

Antwort1

Legen Sie eine Variable fest und verwenden Sie sie dann mit AnsiblesJinja2-Vorlagensystem(es sieht aus, als ob Sie versuchen, PHP mit dem Punktoperator und den Backticks zu verwenden)

vars:
    date: "{{ lookup('pipe', 'date +%Y%m%d-%H%M') }}"
tasks:
  - name: create file with a date in name
    file: path="/path/somefile{{ date }}"

Oder verwenden Sie die Suche selbst in den Vorlagen:

  - name: create file with a date in name
    file: path="/path/somefile{{ lookup('pipe', 'date +%Y%m%d-%H%M') }}"

Antwort2

Ab 2.4 können Sie auch den strftimeFilter (Dokument):

# Display year-month-day
{{ '%Y-%m-%d' | strftime }}

# Display hour:min:sec
{{ '%H:%M:%S' | strftime }}

# Use ansible_date_time.epoch fact
{{ '%Y-%m-%d %H:%M:%S' | strftime(ansible_date_time.epoch) }}

# Use arbitrary epoch value
{{ '%Y-%m-%d' | strftime(0) }}          # => 1970-01-01

Antwort3

Du könntest es versuchen..

vars: 
  - a_timestamp: "{{ timestamp.stdout }}"

tasks:
  - name: Get a timestamp
    command: date +%Y%m%d%H%M%S
    register: timestamp

Fügen Sie dann die Variable bei Bedarf hinzu.

verwandte Informationen