使用Ansible可以同时使用多个服务器并发运行一组任务。
以下是一个示例,假设我们有一个名为hosts.txt
的主机清单文件,其中包含了多个服务器的IP地址。
[webservers]
192.168.1.10
192.168.1.11
192.168.1.12
接下来,我们可以创建一个Ansible playbook,例如tasks.yml
,其中包含我们要在这些服务器上运行的任务。
- name: Run a group of tasks concurrently
hosts: webservers
gather_facts: no
tasks:
- name: Task 1
shell: echo "Task 1"
- name: Task 2
shell: echo "Task 2"
- name: Task 3
shell: echo "Task 3"
上述playbook定义了一个名为webservers
的主机组,然后在该组中的每个主机上并发运行了三个任务。
最后,我们可以使用以下命令运行playbook,并使用-f
参数指定并发运行的主机数。
ansible-playbook -i hosts.txt tasks.yml -f 3
在上述命令中,-f 3
表示同时在3个主机上并发运行任务。您可以根据需要调整并发运行的主机数。
注意:Ansible默认会按照在主机清单文件中定义的顺序依次运行任务。如果您希望在所有主机上同时运行任务,可以在playbook中的hosts
行上添加serial: 1
选项,如下所示:
- name: Run a group of tasks concurrently
hosts: webservers
serial: 1
gather_facts: no
tasks:
...
这样,任务将在所有主机上同时运行。