要解决Ansible不会重用单个SSH连接的问题,我们可以通过在Ansible配置中设置控制持久性的参数来实现。
打开Ansible的配置文件ansible.cfg
,并将以下参数添加到[ssh_connection]
部分:
[ssh_connection]
pipelining = True
control_path = ~/.ansible/ssh-%%h-%%p-%%r
这些参数将启用管道化(pipelining)和控制持久性(control persistence),从而减少SSH连接的数量。
然后,可以使用以下代码示例来测试是否启用了持久性连接:
- name: Test SSH connection reusing
hosts: all
gather_facts: false
tasks:
- name: Execute a command
command: echo "Hello, World!"
在运行此Playbook之后,你可以使用ss
命令(或类似的工具)来查看SSH连接的数量:
$ ss -tnp | grep ssh
你应该会看到只有少量的SSH连接,而不是数百个连接。这表明Ansible成功地重用了SSH连接,而不是每次任务都打开一个新的连接。