无法在Ansible中将纪元转换为可读格式

时间:2019-08-01 18:58:03

标签: ansible jinja2

尝试将纪元时间转换为ansible,但该任务失败,因为我试图循环遍历json输出。

我想做的是:

  1. 注册win_find模块的输出
  2. 仅过滤该寄存器中的创建时间值(eposh值)
  3. 使用strftime过滤器将纪元值转换为可读值

    - win_find:
        path: <path>
      register: register_path
    
     - set_fact:
         epoch_format: "{{ register_path | json_query('files[*].creationtime')}}"
    

这是创建时间过滤器输出

    "ansible_facts": {
    "epoch_format": [
        1564668211.4169703,
        1564668218.4144595,
        1564668227.1259055,
        1564668236.2201614,
        1564668243.202953,
        1564668251.3371267,
        1564668259.5494978,
        1564668268.9736576

现在我尝试转换

- set_fact:
    readable_format: "{{ '%Y-%m-%d' | strftime({{ item }}) }}"
  loop: '{{ epoch_format}}'

这就是我回来的

     "msg": "template error while templating string: expected token ':', 
       got '}'. String: {{ '%Y-%m-%d' | strftime({{ item }}) }}",

如果我尝试引用{{item}} >>'{{item}}',我会得到以下答复:

     "msg": "Invalid value for epoch value ({{ item }})",

反正有做这件事吗?

1 个答案:

答案 0 :(得分:2)

您应该从item中删除花括号:

- set_fact:
    readable_format: "{{ '%Y-%m-%d' | strftime(item) }}"
  loop: '{{ epoch_format}}'

希望有帮助