fabric: 使用Python在集群上执行相同命令的好工具
26 views引言
当你需要在多个机器上执行相同的指令时,你应该怎么办?
- 你可以选择写一个脚本,在脚本中通过ssh连接机器运行命令。
- 你可以把命令写成一个脚本,然后将脚本上传到机器上面。然后,在每一台机器上面,运行相同的脚本。
但是这两种方式都不够具有弹性而且使用起来比较麻烦,同时你需要在linux脚本编写方面拥有一定的功底。
fabric,一个让你通过命令行执行无参数Python函数的工具, 一个让通过 SSH 执行 Shell 命令更加 容易 、 更符合 Python 风格 的命令库(建立于一个更低层次的库)。
安装fabric
安装fabric的方式十分简单,只需要一行命令pip3 install fabric3
,就可以安装成功了。
简单示例
首先假设我们要执行的命令为sudo apt install apache2
, 我们一共拥有pi@192.168.8.1 pi@192.168.8.2 pi@192.168.8.3
三台机器。
使用fabric执行命令的Python脚本如下:
from fabric.api import *
# 定义要执行命令的host
env.hosts = {
'pi@192.168.8.107',
'pi@192.168.8.181',
'pi@192.168.8.191',
}
# 定义集群主机密码
env.password = 'password'
#定义并行运行函数
@parallel
def cmd(comand):
sudo(comand)
然后,把上面脚本文件保存为fabfile.py
,记住,一定是这个名字,错了,就无法执行了。最后,我们在命令行窗口里面使用fab cmd:"sudo apt install apache2"
,就可以执行sudo apt install apache2命令了。如果你想换成其他的命令,把脚本文件里面的comand
换成你需要执行的命令就可以了。
总结
总的来说,使用fabric在集群中进行运维是非常不错的。不需要很强的脚本执行功底。