0Pricing
Ansible Academy · 课时

使用 loop 关键字遍历列表

在一个任务中安装多个软件包

使用 loop 关键字遍历列表 是 CoddyKit 上的免费 Ansible Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ansible Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ansible Academy 课程共包含 4 节课。

停止复制粘贴任务

需要安装三个软件包?编写三个几乎相同的任务既繁琐又容易出错。loop 关键字可以让一个任务遍历列表并重复执行。🔁

loop 的作用

将 loop 添加到任务中,并为它提供一个列表。Ansible 会为每个项目运行一次该任务,并将每个值代入模块的参数。

认识 item 变量

在循环任务中,当前列表值可通过 item 获取。您可以在需要该值的任何位置使用 {{ item }} 来引用它。

- name: Show each fruit
  ansible.builtin.debug:
    msg: "{{ item }}"
  loop:
    - apple
    - banana
    - cherry

安装多个软件包

最常见的用途是:在一个任务中安装完整的软件包列表。每个名称都会通过 item 传递给软件包模块。

- name: Install tools
  ansible.builtin.package:
    name: "{{ item }}"
    state: present
  loop:
    - git
    - curl
    - vim

遍历变量列表

列表不必直接写在任务中。您可以让 loop 指向一个变量,使同一个任务能够适应您在其他位置定义的任意值。

vars:
  packages:
    - git
    - curl
tasks:
  - name: Install
    ansible.builtin.package:
      name: "{{ item }}"
    loop: "{{ packages }}"

loop 与 with_items

您可能会看到较旧的 playbook 使用 with_items。它仍然有效,但对于简单列表,loop 是现代且推荐的写法。

一个任务,多个结果

循环会为每个项目运行一次任务,因此输出会为每次迭代显示一行结果。您可以准确看到哪些值发生了变化。

循环仍然保持幂等性

循环不会破坏幂等性。如果软件包已经存在,该次迭代会报告 ok;只有新安装的软件包会报告 changed。

许多软件包管理器支持批量处理

某些模块可以直接接受列表,这样速度更快。但 loop 是适用于几乎任何模块的通用模式。

数字也可以循环

列表不只可以包含字符串。您可以遍历数字或任何数据类型,而 item 会携带列表中保存的相应值。

- name: Print ports
  ansible.builtin.debug:
    msg: "Port {{ item }}"
  loop:
    - 80
    - 443
    - 8080

空列表是安全的

如果列表为空,任务只会运行零次。不会出错,也不会造成影响。遍历一个可能为空的变量列表完全没有问题。

快速检查

在循环任务中,如何引用当前列表值?

回顾:您已经会使用循环

您用一个 loop 替代了重复任务,通过 item 访问每个值,并保持了幂等性。下一步:遍历字典。🎉

常见问题解答

「使用 loop 关键字遍历列表」课时是免费的吗?

是的 — 「使用 loop 关键字遍历列表」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ansible Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ansible Academy 课程共包含 4 节课。

「使用 loop 关键字遍历列表」这节课中我会学到什么?

在一个任务中安装多个软件包 你通过在浏览器中直接运行的动手代码来练习 Ansible Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Ansible Academy 需要有经验吗?

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

「使用 loop 关键字遍历列表」课时需要多长时间?

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

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

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

此课程中的所有课时

  1. 使用 loop 关键字遍历列表
  2. 遍历字典
  3. 使用 subelements 进行嵌套循环
  4. loop_control:label、index 与 pause
← 返回 Ansible Academy