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在集群中进行运维是非常不错的。不需要很强的脚本执行功底。

Rating: 5.0/5. From 1 vote.
Please wait...