背景:我有几台服务器运行我开发的服务。它们都应具有相同的服务副本。
为了确保部署和最新性,我使用 Ansible,以及部署服务的幂等剧本。由于服务器位于不可靠的网络上,因此我必须定期运行剧本(在 cron 作业中)以访问以前可能不可用的服务器。
问题:我的印象是 SaltStack 的哲学是不同的:我虽然我可以"设置一个状态,编译它并提供给一组工作节点。然后,这些爪牙会在自己的闲暇时间来到主人那里,得到他们需要做的任何事情"。
情况似乎并非如此:部署时不可用的工作节点将被跳过。
问题:是否有一种机制允许异步部署,从某种意义上说,在主节点上设置一次的状态一旦准备就绪/可以到达主节点,就会被工作节点(对自己)拉取和应用?
具体来说,无需不断向所有工作节点重新提供相同的状态,希望过去不可用的仆从现在能够获得更新。
每次工作节点连接到主节点时,事件总线上都有一个事件,您可以对此做出反应。
反应器
这是Ansible和Saltstack之间的主要区别。
为了做你想做的事,我会对每个工作节点的重新连接做出反应,并尝试应用幂等状态。
幂等
您还可以在 Saltstack 中设置一个计划任务,该任务每 X 分钟运行一次状态并应用所需的配置。
计划任务
Daniel Wallace(盐开发者)的回答:
这是不可能的。
工作节点连接到发布端口/总线,主节点将新的 那辆公共汽车上的工作。然后工作节点拾取它并运行作业,如果 发布作业时工作节点未连接,则不会 查看工作。