该系列的一部分:
如何编写 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 时如何使用循环的更多详细信息,请参阅官方文档。