Ansible 是否为剧本中的每个任务创建单独的 SSH 连接

gau*_*har 5 ssh ansible

如果我在剧本中定义了多个任务,ansible 是否会为每个任务创建一个单独的 ssh 连接。如果是,那不是性能问题。

因为每当我在运行剧本时执行冗长的 o/p 时,我都会针对每项任务发现这一点。“为用户建立 SSH 连接:gparasha”我的理解错了。

lar*_*sks 8

默认情况下,Ansible 为每个任务创建一个新连接。它利用SSH 连接多路复用来显着减少建立新连接所需的时间。

如果您启用流水线功能,那么在许多情况下 Ansible 将能够为多个任务重用单个 ssh 连接(尽管在某些情况下它仍然需要生成一个新连接)。

要启用流水线,您需要在您的ansible.cfg

[ssh_connection]
pipelining = True
Run Code Online (Sandbox Code Playgroud)

  • 启用管道将显着加快 Ansible 的速度,尤其是对于包含许多短任务的 playbook。默认情况下未启用它的原因是,它仅在所有托管主机上的 /etc/sudoers 中未启用“requiretty”选项时才起作用,这意味着对于大多数发行版,您必须禁用它,但对于RHEL 衍生产品默认情况下已禁用。禁用“requiretty”是非常安全的,因为它首先不会提供很大的安全性提升,因为攻击者可能可以绕过它。 (2认同)