仅在条件为 True 时运行任务
根据布尔条件决定是否执行任务
仅在条件为 True 时运行任务 是 CoddyKit 上的免费 Ansible Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ansible Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ansible Academy 课程共包含 4 节课。
会做决定的任务
有时任务只应在特定情况下运行。when 关键字会根据您选择的条件决定任务是否执行。🚦
when 关键字
将 when 添加到任意任务中。如果表达式为真,任务就会运行;如果为假,Ansible 会跳过它并继续执行。
- name: Reboot the box
ansible.builtin.reboot:
when: reboot_required不需要花括号
在 when 中直接写表达式即可。与字符串不同,您不需要使用双花括号,因为 when 已经处于 Jinja2 上下文中。
when: ansible_distribution == "Ubuntu"真值变量
简单的布尔变量可以直接使用。如果 install_extras 为 true,任务就会运行;否则会静默跳过。
- name: Add extra tools
ansible.builtin.package:
name: htop
when: install_extras比较
条件可以比较值。==、!=、< 和 > 等运算符可以让您根据数字和字符串决定任务是否运行。⚖️
when: app_version == "2.0"跳过与失败
跳过任务并不代表失败。在运行输出中,您会看到 skipping,而不是 ok 或 changed,并且 play 会继续执行。
否定条件
使用 not 可以反转一个测试。只有当服务尚未安装时,此任务才会运行。
when: not service_installed是否已定义
您可以测试某个变量是否存在。is defined 测试可以避免未定义变量错误。
when: custom_port is definedwhen 按主机运行
每台主机会单独进行判断。在同一个 play 中,某个条件可以在一台服务器上为真,在另一台服务器上为假。
保持条件简单
可读的条件更可靠。如果 when 变得过长,请拆分逻辑,或使用变量来表达其意图。
声明式,而非命令式
when 让 playbook 保持声明式:您描述适用的情况,由 Ansible 针对每台主机做出决定。不需要 if 代码块或分支脚本。🎯
快速检查
让我们确认一下 when 的行为。
回顾
when 关键字仅在表达式为真时运行任务。为假意味着跳过而不是失败,并且会针对每台主机分别判断。✅
常见问题解答
「仅在条件为 True 时运行任务」课时是免费的吗?
是的 — 「仅在条件为 True 时运行任务」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ansible Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ansible Academy 课程共包含 4 节课。
「仅在条件为 True 时运行任务」这节课中我会学到什么?
根据布尔条件决定是否执行任务 你通过在浏览器中直接运行的动手代码来练习 Ansible Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ansible Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ansible Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「仅在条件为 True 时运行任务」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ansible Academy 课中编写并运行代码吗?
能。每节 Ansible Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 仅在条件为 True 时运行任务
- 根据 OS 系列事实进行分支处理
- 使用 and / or 组合条件
- 注册结果,然后作出判断