You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible template模块的Jinja2模板中打印当前日期?

Ansible Jinja2模板输出当前日期解决方案

你原来的写法是直接把shell命令作为普通文本写在模板里,Jinja2不会自动识别执行这类命令,所以会原样输出。可以通过以下两种常用方案实现需求:

方案1:使用Ansible内置facts变量(获取受控端当前日期)

Ansible默认会收集受控节点的系统信息(facts),其中内置的ansible_date_time变量已经包含格式化好的日期数据,直接在模板中引用即可:

Today date is {{ ansible_date_time.date }}

ansible_date_time.date默认输出格式就是YYYY-MM-DD,完全匹配你的需求。如果你的playbook设置了gather_facts: no,需要先开启facts收集或者手动执行setup模块获取变量。

方案2:使用Jinja2 strftime过滤器(获取控制端当前日期)

如果你需要输出Ansible控制节点的当前日期,直接使用Jinja2内置的时间过滤器即可:

Today date is {{ '%Y-%m-%d' | strftime }}

该方法不需要依赖facts收集,渲染模板时直接读取控制节点的系统时间生成日期。

如果你确实需要通过执行shell命令获取日期,可以先在playbook中将命令执行结果注册为变量,再传入模板调用:

- name: 生成日期变量
  shell: date +%Y-%m-%d
  register: custom_date

模板中引用写法:Today date is {{ custom_date.stdout }}


内容的提问来源于stack exchange,提问作者vtr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:18:03