我有一些工作需要在 50 多台服务器上完成。第一步是将某些源代码的更新版本检出到共享目录中(假设都安装了共享驱动器)。第二个是在每台服务器上执行一些工作。
我希望这两个脚本在每台服务器上运行。所有 50 多台服务器都是从一个磁盘映像中克隆出来的,我无法自定义其中的任何一个。
当 50 个服务器运行第一个脚本时,我只希望第一个尝试运行它的服务器实际运行它。其他我想简单地退出。实际运行脚本的服务器应该更新一个共享目录,然后退出。然后,稍后,第二个脚本将根据第一个服务器获取的更新代码在所有服务器上运行并执行工作。
最好的方法是什么?我可以可靠地让第一个脚本在一个服务器上运行并创建一个文件或充当某种“信号量”或某种“锁”的东西,从而使其他服务器远离吗?
更复杂的是,我正在考虑让脚本从每台服务器上的相同 cron 文件运行——这意味着所有脚本都可以尝试同时运行它,假设它们的所有时钟设置相同。
我希望这些将从 bash 脚本运行。作为一种方法,这有意义吗?