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

如何在Ansible中循环templates目录下的data-*.j2文件进行传输

批量部署以data-开头的Ansible模板文件

你可以通过以下两种方式实现批量传输templates目录下所有以data-开头的.j2模板文件:

方法一:使用with_fileglob(传统简洁写法)

这种方式语法直观,适合快速匹配指定模式的文件:

- name: 批量部署data开头的模板文件
  ansible.builtin.template:
    src: "{{ item }}"
    dest: "/目标路径/{{ item | basename | regex_replace('\\.j2$', '') }}"
  with_fileglob:
    - "templates/data-*.j2"

方法二:使用loop配合query查找(更灵活的现代写法)

如果习惯用loop语法,可以结合fileglob查找插件实现:

- name: 批量部署data开头的模板文件
  ansible.builtin.template:
    src: "{{ item }}"
    dest: "/目标路径/{{ item | basename | regex_replace('\\.j2$', '') }}"
  loop: "{{ query('fileglob', 'templates/data-*.j2') }}"

核心逻辑说明:

  • fileglob:匹配指定路径下符合规则的文件,templates/data-*.j2会精准筛选出templates目录下以data-开头、.j2结尾的所有文件。
  • basename过滤器:提取文件的纯文件名(去掉路径前缀),比如把templates/data-service01.service.j2简化为data-service01.service.j2。
  • regex_replace('\\.j2$', ''):用正则替换掉文件名末尾的.j2后缀,得到最终要部署的目标文件名,比如data-service01.service。
  • 记得把示例中的/目标路径/替换为你实际要部署到远程主机的目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:12:02