如何在 Ansible Playbooks 中使用循环


该系列的一部分:
如何编写 Ansible Playbooks

Ansible 是一种现代配置管理工具,不需要在远程节点上使用代理软件,仅使用 SSH 和 Python 在托管服务器上进行通信和执行命令。本系列将带您了解可用于编写服务器自动化剧本的主要 Ansible 功能。最后,我们将看到一个实际示例,说明如何创建剧本以自动设置远程 Nginx Web 服务器并向其部署静态 HTML 网站。

在自动化服务器设置时,有时您需要使用不同的值重复执行相同的任务。例如,您可能需要更改多个文件的权限,或创建多个用户。为避免在您的剧本文件中多次重复该任务,最好改用循环。

在编程中,循环允许您重复指令,通常直到满足特定条件。Ansible 提供了不同的循环方法,loop关键字是长期兼容性的最推荐选项。

以下示例在该/tmp位置创建三个不同的文件file在使用三个不同值实现循环的任务中使用模块。

playbook-06.yml在您的ansible-practice目录中创建一个名为的新文件

  • nano ~/ansible-practice/playbook-06.yml

然后将以下行添加到新的剧本文件中:

~/ansible-practice/playbook-06.yml
---
- hosts: all
  tasks:
    - name: creates users files
      file:
        path: /tmp/ansible-{{ item }}
        state: touch
      loop:
        - sammy
        - erika
        - brian

完成后保存并关闭文件。

然后,ansible-playbook使用与前面示例相同的连接参数运行同样,我们使用了一个名为 的清单文件inventory和一个名为 的用户sammy,但您应该相应地更改这些值:

  • ansible-playbook -i inventory playbook-06.yml -u sammy

你会得到这样的输出,显示循环中使用的每个单独的项目值:

Output
... TASK [creates users files] ****************************************************************************** changed: [203.0.113.10] => (item=sammy) changed: [203.0.113.10] => (item=erika) changed: [203.0.113.10] => (item=brian) ...

关于在编写 Ansible playbook 时如何使用循环的更多详细信息,请参阅官方文档

觉得文章有用?

点个广告表达一下你的爱意吧 !😁