无法将纪元转换为ansible中可读的格式

Mar*_*ous 2 jinja2 ansible

尝试在 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')}}"
    
    Run Code Online (Sandbox Code Playgroud)

这是创建时间过滤器的输出

    "ansible_facts": {
    "epoch_format": [
        1564668211.4169703,
        1564668218.4144595,
        1564668227.1259055,
        1564668236.2201614,
        1564668243.202953,
        1564668251.3371267,
        1564668259.5494978,
        1564668268.9736576
Run Code Online (Sandbox Code Playgroud)

现在我尝试转换

- set_fact:
    readable_format: "{{ '%Y-%m-%d' | strftime({{ item }}) }}"
  loop: '{{ epoch_format}}'
Run Code Online (Sandbox Code Playgroud)

这就是我得到的回报

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

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

     "msg": "Invalid value for epoch value ({{ item }})",
Run Code Online (Sandbox Code Playgroud)

有办法完成这件事吗?

ili*_*-sp 5

您应该从以下位置删除大括号item

- set_fact:
    readable_format: "{{ '%Y-%m-%d' | strftime(item) }}"
  loop: '{{ epoch_format}}'
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你