自动化服务器设置时,有时需要使用不同的值重复执行相同的任务. 例如,您可能需要更改多个文件的权限,或创建多个用户。
在编程中,一个 loop 允许您重复指令,通常直到满足一定的条件。
下面的示例在/tmp
位置上创建三个不同的文件. 它使用一个任务中的文件
模块,该模块使用三种不同的值实现循环。
在你的ansible-practice
目录中创建一个名为playbook-06.yml
的新文件:
1nano ~/ansible-practice/playbook-06.yml
然后将以下行添加到新播放簿文件中:
1[label ~/ansible-practice/playbook-06.yml]
2---
3- hosts: all
4 tasks:
5 - name: creates users files
6 file:
7 path: /tmp/ansible-{{ item }}
8 state: touch
9 loop:
10 - sammy
11 - erika
12 - brian
保存并关闭文件,当你完成。
然后,运行ansible-playbook
使用上面的示例中的相同连接参数. 再次,我们使用一个名为库存
的库存文件和一个名为sammy
的用户,但您应该相应地更改这些值:
1ansible-playbook -i inventory playbook-06.yml -u sammy
您将获得这样的输出,显示在循环中使用的每个单个项目值:
1[secondary_label Output]
2...
3TASK [creates users files] ******************************************************************************
4changed: [203.0.113.10] => (item=sammy)
5changed: [203.0.113.10] => (item=erika)
6changed: [203.0.113.10] => (item=brian)
7...
有关如何在写 Ansible 剧本时使用循环的详细信息,请参阅 官方文档。