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

标签 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 }})",

有办法完成这个任务吗?

最佳答案

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

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

希望对你有帮助

关于ansible - 无法将纪元转换为ansible中可读的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57315441/

相关文章:

list - 如何将列表与特定键/值作为主机变量进行组合/匹配

ansible - 如何在特定主机: ansible-playbook -i <hostname>,上运行ansible

ansible - 如何在 Ansible 中创建包含一些示例内容的多个文件?

python - 无法覆盖 flask_bootstrap css

python - Span 元素不将 ' 替换为撇号

python - Jinja2 模板的代码覆盖率

css - 使用 CSS 的狮身人面像和 Accordion 列表

shell - 抑制 Ansible 警告(至少对于 aptitude 安装)

scripting - 在ansible中展平和过滤复杂的结构 - 字典列表的字典

Ansible修改列表元素