0Pricing
DevOps Bootcamp · 课时

使用 and / or 组合条件

构建复合 when 表达式

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

多个规则

实际决策通常需要同时满足多个规则。Ansible 允许您在一个 when 中使用 and 和 or 组合多个测试。🔗

两者都必须为真

使用 and 时,每个部分都必须成立。此任务只会在 Debian 主机同时请求了额外内容时运行。

when: ansible_os_family == "Debian" and install_extras

满足任一条件即可

使用 or 时,任意一个为真的部分就足够了。此条件匹配处于 staging 或测试环境的主机。

when: env == "staging" or env == "test"

列表快捷写法

将 when 写成 YAML 列表,表示每一项都必须为真。这是表达 and 的简洁易读方式。

when:
  - ansible_os_family == "Debian"
  - install_extras

使用括号分组

需要混合使用 and 和 or?请使用括号明确分组,避免产生出乎意料的结果。

when: (env == "prod" or env == "staging") and backups_enabled

优先级规则

和 Python 一样,and 的绑定比 or 更紧。如果不确定,请加上括号,让逻辑完全按照您的意图呈现。

对一组条件取反

在带括号的条件组前加上 not,即可将整个条件组取反。这里的任务会跳过 production 和 staging。

when: not (env == "prod" or env == "staging")

混合使用事实和变量

条件可以将收集到的事实与您自己的变量结合起来,因此任务能够同时响应主机状态和您的意图。

when: ansible_memtotal_mb > 2048 and enable_cache

列表中的每一项

在列表形式中,每一行都是一个表达式。它们通过 and 连接,因此所有表达式都必须通过,任务才会运行。

注意变量类型

请将数字作为数字进行比较,将字符串作为字符串进行比较。为数字加引号,例如 "9",会使其变成字符串,并可能导致测试失败。

易读的逻辑更安全

对于单纯的 and,优先使用列表形式;对于混合逻辑,则使用括号。清晰的条件更容易建立信任,也更便于检查。🎯

快速检查

让我们测试复合条件。

回顾

使用 and、or 和 not 组合测试。when 列表表示所有条件都为真;对于混合逻辑,请使用括号以确保清晰。✅

常见问题解答

「使用 and / or 组合条件」课时是免费的吗?

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

「使用 and / or 组合条件」这节课中我会学到什么?

构建复合 when 表达式 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

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

「使用 and / or 组合条件」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 仅在条件为 True 时运行任务
  2. 根据 OS 系列事实进行分支处理
  3. 使用 and / or 组合条件
  4. 注册结果,然后作出判断
← 返回 DevOps Bootcamp