为什么在Fabric脚本中逐行重新实现shell命令?

4 投票
3 回答
1068 浏览
提问于 2025-04-16 15:47

Fabric 是一个用来“执行本地或远程命令行指令”的工具。

那么,为什么要在一个长长的 Fabric 脚本中逐行重新实现一个远程的命令行脚本呢?

也就是说,为什么不直接写一个简短的 Fabric 脚本来运行一个很长的远程命令行脚本呢?

3 个回答

2

我觉得你选择的方式会根据你想要做的事情而不同。有些事情在Python中更简单(比如写在你的fabfile里),而有些事情在命令行中更容易(可以采用提到的某种命令行方法)。

无论怎样,Fabric的设计是为了集中管理和便于移植,其实不太在乎到底是谁在执行这些操作。

4

如果我需要在10台服务器上运行同样的脚本,这可就麻烦了。这意味着我不仅要把同样的长脚本放到10台服务器上,还得确保如果我在其中一台服务器上修改了脚本,其他服务器也得同步更新。我知道可以把脚本放在一个共享的位置来解决这个问题,但把脚本放在fabfile里会更有条理,这样不仅可以进行版本控制,还能确保在所有角色中保持一致。

4

lobster1234 提出了一个很好的观点,就是你不想手动把一个很长的远程 shell 脚本放到 10 台服务器上。不过,如果你还是想避免把这个长长的远程 shell 脚本改写成一个长长的 Fabric 脚本,你可以写一个 Fabric 脚本,先把那个远程 shell 脚本复制到指定的服务器上,然后执行这个脚本,最后再把它删除。这样,你就可以把 fabfile 和 shell 脚本一起进行版本控制,同时又不用把 shell 脚本改写成 Fabric 脚本。

撰写回答