中级第 6 / 12 节30 分钟 · 实操
使用 Jinja2 的模板
Ansible 课程的一部分
把一个固定不变的文件复制到每台机器上,这套做法一直挺好用,直到某台机器需要换一个端口号、换一个主机名,或者需要一段只对部分服务器生效的配置。到那一步,你只剩两个都不怎么样的选择:给每台机器各留一份略有差别的文件,然后指望自己每次都记得把它们一起改;或者等 Ansible 跑完之后,再手动登上每台服务器去写这个文件。这两条路都把当初做部署自动化的意义给抹掉了。你真正想要的,是一个文件描述配置的结构,其中随机器变化的部分按机器填入,只在特定条件下才需要的部分只在该出现时才出现。
带空格待填、按收件人逐份填写的套用信函,这个想法你已经见过了。Ansible 用的模板语言 Jinja2 就是同一个想法,只是走得更远。基础的邮件合并只会填空:这里填个名字,那里填个地址。Jinja2 模板还能逐行判断某一段到底该不该出现,也能按列表里的每一项把某一行重复一遍,而不用你手写出每一份。想象一封保险续保通知:你的姓名和保单号被填进各处的空位,关于折扣的那一整段只在你确实符合条件时才打印,靠近末尾的表格则按你保单上的车辆逐台列出一行,有几台就列几行。Jinja2 模板对配置文件做的正是这些事:填入值、包含或跳过整块内容、按列表长度重复若干行。 ...
想在真实环境里学习 Ansible 使用 Jinja2 的模板 吗?
点击下方,立即获得一台预装 Ansible 的 Linux 主机,跟懂你代码的 AI 导师一起完成 使用 Jinja2 的模板 的实操练习。
开始这节课使用 Jinja2 的模板你将学到什么
- Template module
- Jinja2 expressions
- Filters
- If blocks in templates
- For loops in templates
用你的语言阅读本课
本课程的所有课时
12 节探索其他课程
Python
19 节 · 9.3小时
Go
20 节 · 12.3小时
React
17 节 · 10.2小时
Linux
17 节 · 8.5小时
Docker
13 节 · 6.6小时
Git
13 节 · 5.9小时
Kubernetes
14 节 · 8小时
Bash
12 节 · 5.7小时
Helm
10 节 · 5.4小时
GitLab CI
11 节 · 5.8小时
Jenkins
11 节 · 5.3小时
PostgreSQL
14 节 · 7.6小时
MySQL
13 节 · 6.8小时
Web
14 节 · 5.9小时
TypeScript
18 节 · 7.7小时
Vibe Coding
12 节 · 5.8小时
Prompt Engineering
11 节 · 6.2小时
Vibe 编程:基础
12 节 · 4.5小时
Vibe 编程:从原型到生产
12 节 · 5.5小时
Vibe 编程:多智能体工程
12 节 · 5.3小时
Vibe 编程:高级工程
12 节 · 7.3小时
