Ansible playbook - 循环运行任务(with_items)

编程狂想曲 2024-07-14 ⋅ 19 阅读

在 Ansible playbook 中,with_items 是一个强大的循环功能,它允许我们对一组项(items)重复执行任务。这在处理具有相同配置的多个主机或执行相同操作的多个任务时非常有用。让我们来看一些示例如何使用 with_items

安装 Ansible

首先,我们需要在我们的控制节点上安装 Ansible。可以按照 Ansible 的官方文档(https://docs.ansible.com/ansible/latest/installation_guide/index.html)中的说明进行安装。

创建 Ansible playbook

接下来,我们创建一个新的 Ansible playbook 文件 playbook.yml,用于演示 with_items 功能。

---
- hosts: webservers
  become: yes

  tasks:
    - name: Update packages
      yum:
        name: "{{ item }}"
        state: latest
      with_items:
          - httpd
          - mysql
          - php

    - name: Start services
      service:
        name: "{{ item }}"
        state: started
      with_items:
          - httpd
          - mysql
          - php-fpm

解释 playbook 中的任务

  • hosts: webservers:定义了我们要操作的主机组。
  • become: yes:表示使用特权模式运行任务。
  • tasks:定义了我们要执行的任务列表。

接下来的任务示例:

  1. Update packages 任务使用 yum 模块来安装指定的软件包。with_items 部分列举了要安装的软件包列表。
  2. Start services 任务使用 service 模块来启动指定的服务。with_items 部分列举了要启动的服务列表。

在这个例子中,with_items 允许我们针对每个指定的软件包或服务重复执行任务。

运行 playbook

保存 playbook 文件后,我们可以使用以下命令来运行该 playbook:

ansible-playbook playbook.yml

Ansible 会将 playbook 的内容发送到我们指定的主机组中的每个主机,并执行其中的任务。

总结

with_items 是 Ansible playbook 中非常有用的循环功能。它可以让我们针对一个项目列表重复执行任务,从而简化操作和管理多个主机或任务的过程。在实际应用中,可以根据需要使用 with_items 来优化 Ansible playbook 的编写,提高自动化效率。

希望本篇博客能够帮助你更好地使用 Ansible!如果你有任何问题或建议,请随时提出。


全部评论: 0

    我有话说: