如何在 Ansible Playbook 中使用循环

自动化服务器设置时,有时需要使用不同的值重复执行相同的任务. 例如,您可能需要更改多个文件的权限,或创建多个用户。

在编程中,一个 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 剧本时使用循环的详细信息,请参阅 官方文档

Published At
Categories with 技术
comments powered by Disqus