如何通过 saltstack 中的 .sls 文件在另一个 minion 上使用终端命令 运行 定位负载均衡器?

How do I target a Load Balancer with a terminal command ran on another minion via a .sls file in saltstack?

我有一个 6 网络服务器一个负载均衡器配置。我希望在更新网站内容时在负载均衡器上禁用网络服务器。我希望在所有 minions 中以滚动方式完成此操作。例如:维护 Minion1,在 LB 上禁用 minion1,维护完成后再次启用 minion1,同时 saltstack 移至 minion2 并重复该过程。我想用这样的东西 echo "disable server backend/servername | socat stdio /etc/haproxy/haproxysock" 其中 servername 将是正在维护的 minion,但此命令每次都必须在 haproxy LB 上 运行。在维护之前禁用网络服务器一次,在维护之后再次启用网络服务器。任何帮助将非常感激。

您可以使用 dahrens 提到的反应器系统构建您的解决方案。

您可能会考虑使用此处的 orchestrate runner:https://docs.saltstack.com/en/latest/topics/tutorials/states_pt5.html#orchestrate-runner

这将使您能够非常好地安排滚动更新。

如果您想从常规 Salt 状态执行此操作,您可以使用 cli 上的 batch 选项一次更新一个服务器,并使用 prereq 从中删除当前服务器更新期间的负载平衡器。