0Pricing
DevOps Bootcamp · 课时

template 模块与 .j2 文件

将渲染后的文件部署到主机

template 模块与 .j2 文件 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

静态文件并不够用

copy 模块会原样传送一个文件。但配置文件通常需要使用因服务器而异的端口或主机名,因此静态副本无法满足需求。🤔

使用 template 模块

template 模块会先通过 Jinja2 渲染文件,填入变量,然后将结果复制到主机。

- name: Deploy config
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf

.j2 约定

模板源文件以 .j2 结尾,用于标记其为 Jinja2 文件。这是一项约定,并非硬性规则,但大家都会遵循。

src 和 dest

src 指向控制节点上的 .j2 文件,而 dest 是受管主机上的最终路径。

template:
  src: app.conf.j2
  dest: /etc/app/app.conf

模板存放位置

默认情况下,Ansible 会在 Playbook 旁边或角色内部的 templates 目录中查找模板。无需添加路径前缀。

templates/
  nginx.conf.j2
site.yml

最小模板

在 .j2 文件中,纯文本保持不变,而 {{ }} 标记会被替换。这里,端口变量会变成实际的数字。

listen {{ http_port }};
server_name {{ domain }};

设置文件权限

和 copy 一样,template 也接受 owner、group 和 mode,因此渲染后的文件会拥有正确的所有权。

template:
  src: app.conf.j2
  dest: /etc/app.conf
  mode: "0644"

写入前进行验证

validate 选项会在安装渲染后的文件之前运行检查命令,因此错误的配置不会被部署。

template:
  src: sshd.j2
  dest: /etc/ssh/sshd_config
  validate: "sshd -t -f %s"

模板具有幂等性

如果渲染结果与主机上已有的文件一致,template 会报告 ok,且不会进行任何更改。可以安全地反复运行。

发生更改时通知处理程序

将 template 与 notify 搭配使用,这样只有配置文件确实发生更改时,服务才会重启。这是非常理想的组合。

template:
  src: nginx.conf.j2
  dest: /etc/nginx/nginx.conf
  notify: restart nginx

template 与 copy 的区别

当文件在所有主机上都相同时,请使用 copy;当文件的任何部分必须因主机而异时,请使用 template。

快速检查

您需要一个端口因服务器而异的配置文件。哪个模块适合?

回顾

您已经了解 template 模块:它使用 Jinja2 渲染 .j2 文件,将其放置到 dest 指定的位置,设置权限,并保持幂等性。✨

常见问题解答

「template 模块与 .j2 文件」课时是免费的吗?

是的 — 「template 模块与 .j2 文件」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「template 模块与 .j2 文件」这节课中我会学到什么?

将渲染后的文件部署到主机 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「template 模块与 .j2 文件」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. template 模块与 .j2 文件
  2. Jinja2 中的变量与表达式
  3. 模板中的循环与 if 块
  4. 过滤器:default、join 与 upper
← 返回 DevOps Bootcamp