如何在AnsiblePlaybook中使用循环

来自菜鸟教程
跳转至:导航、​搜索

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

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

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

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

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 时如何使用循环的详细信息,请参考【X102X】官方文档【X128X】。