尝试在 ansible 中转换纪元时间,但任务失败,因为我试图循环 json 输出。
我想做的是:
使用 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)
有办法完成这件事吗?
您应该从以下位置删除大括号item:
- set_fact:
readable_format: "{{ '%Y-%m-%d' | strftime(item) }}"
loop: '{{ epoch_format}}'
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你