为非常规网络优化 Ansible Transport\SSH

Optimizing Ansible Transport\SSH for Unconventional Networks

我想知道如何优化 Ansible 以使用与 Accelerate 和 default 不一定有益的用例完全不同的网络。

在这种情况下,我不是在处理虚拟网络,也不是在处理服务器。我正在处理数百个嵌入式,具有相当独特的网络设计,主机故障或网络布线的缺点可能导致相邻主机的定期连接更改。

这通常会导致单个 SSH 连接上的 SSH 会话丢失或滞后,但不幸的是,有时会导致 Ansible 在特定主机上挂起,单独更改超时似乎没有任何区别。

任何人都可以提供一些信息,说明哪些参数最适合在网络上管理配置更改和安装更新,在这种情况下,在特定主机上的会话期间或连接到特定主机时可能会发生中断,因此较长的会话可能没有好处。特别是针对此使用场景的这些领域的一些建议

  1. ssh 与 paramiko
  2. 控制持续、流水线和超时参数
  3. 加速还是不加速?
  4. 正在评估指定货叉数量对 运行
  5. 的适用性

如果您在网络中工作,其中连接可能会丢失 'during' 执行 play/task 那么我不确定(阅读:我不认为)ansible 是否会保存执行上下文如此频繁,以便从此类问题中恢复过来。

如果你的网络不好,你应该修复它。

假设您已经知道所有这些并且:如果您的网络很糟糕但您无法修复它,那么您感兴趣的参数将是您列出的 #2 和可能的 #3。

更改 #2 以确保 SSH 不会尝试重用连接(不会持续存在)。这会减慢 playbook 的执行速度,但会提供更好的稳定性。

如果您必须传输大文件并且您使用的是 paramiko 或早于 1.5 的 ansible,请更改 #3。

为了完整起见:#1 有点简单,除非别无选择,否则不要使用 paramiko。因此,尽管您将其列为您可以选择的内容,但出于实际目的,ansible 希望您使用 SSH,因为使用 paramiko 而不是 SSH 有很多缺点,而且只有一个优点,如果您没有优点,那么您可能不需要它。 :-)

即使在所有这些设置之后,如果您的连接在执行任务期间丢失,那么 ansible 可能无法执行任何操作,除了向您显示一条错误消息。唯一可以帮助您处理这些情况的是 plays/tasks 的幂等性。这样您就可以 运行 循环,直到您的剧本 运行 成功并进行 0 次更改。