ansible manipular arquivo com um formato de data

5

Em ansible, eu gostaria de manipular arquivos / diretórios / archive que são compostos ou compostos assim:

Como eu faria isso? Parece Ansible não é capaz de manipular isso. (Eu duvido). Então, o que eu faço de errado?

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....
    
por yield 13.10.2015 / 17:51

3 respostas

14

Defina uma variável e, em seguida, use-a com o sistema de modelos Jinja2 da Ansible ( parece que você está tentando fazer PHP com o operador dot e os backticks)

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

Ou use a própria pesquisa nos modelos:

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

A partir do 2.4, você também pode usar o filtro strftime ( doc ):

# 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
    
por 14.12.2017 / 20:07
0

Você pode tentar ...

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

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

adicione a variável onde for necessário.

    
por 16.11.2016 / 18:51