当你想管理远程机器或部署应用程序时,虽然有多种命令行工具可供选择,但很多都缺乏详细的文档。在本教程中,我们将逐步向您介绍如何使用fabric来帮助您更好地管理多台服务器。Fabric是一个用Python编写的命令行工具库,可以帮助系统管理员高效地执行某些任务,例如通过SSH在多台机器上执行某些命令、远程部署应用程序等。在使用它之前,如果你有使用Python的经验,它将帮助你更好地使用Fabric。当然,如果你没有,也不影响Fabric的使用。为什么我们选择Fabric:简单而完整的文档。如果你懂Python,就没有必要增加学习其他语言的成本。它易于安装和使用。使用方便,支持多机并行操作。对标准OpenSSH服务的支持就足够了。只要在机器上安装并启用该服务,就可以使用Fabric来管理机器。依赖Python2.5或更高版本,以及相应的开发组件Python-setuptools和pip(可选,但强烈推荐)gcc我们推荐使用pip安装Fabric,但也可以使用系统自带的包管理器如yum,dnf或apt-get安装,包名一般为fabric或python-fabric。如果是基于RHEL/CentOS的发行版系统,可以使用系统自带的EPEL源安装fabric。#yuminstallfabric【适用于基于RedHat的系统】#dnfinstallfabric【适用于Fedora22+版本】如果你是Debian或其衍生系统如Ubuntu、Mint的用户,可以使用apt-get安装,如下:#apt-getinstallfabric如果要安装开发版的Fabric,需要安装pip在master分支上安装最新版本。#yuminstallpython-pip【适用于基于RedHat的系统】#dnfinstallpython-pip【适用于Fedora22+版本】#apt-getinstallpython-pip【适用于基于Debian的系统】安装pip后,可以使用pip获取最新版本织物。#pipinstallfabric如何使用Fabric自动执行Linux管理任务现在让我们开始使用Fabric。在之前的安装过程中,FabricPython脚本已经放在了我们的系统目录下。当我们要运行Fabric时,输入fab命令。在本地Linux机器上运行命令行像往常一样,首先使用您喜欢的编辑器创建一个名为fabfile.py的Python脚本。可以使用其他名称来命名脚本,但需要指定此脚本的路径,如下:#fabric--fabfile/path/to/the/file.pyfabric使用fabfile.py执行任务,此文件应放在执行Fabric命令的目录里面。示例1:创建入门级HelloWorld任务:#vifabfile.py在文件中输入以下内容:defhello():print('Helloworld,Tecmintcommunity')保存文件并执行以下命令:#fabhelloFabric工具使用说明示例2:新建一个名为fabfile.py的文件并打开:将以下代码粘贴到文件中:#!/usr/bin/envpythonfromfabric.apiimportlocaldefuptime():local('uptime')保存文件并执行以下命令:#fabuptimeFabric:检查系统正常运行时间让我们来看看这个例子。fabfile.py文件在本地执行uptime命令。在远程Linux机器上运行命令以执行自动化任务FabricAPI使用一个名为env的关联数组(Python中的字典)作为配置目录来存储有关Fabric将控制的机器的信息。env.hosts是您要执行Fabric任务的机器列表。如果你的IP地址是192.168.0.0,想用Fabric管理地址为192.168.0.2和192.168.0.6的机器,需要的配置如下所示:#!/usr/bin/envpythonfromfabric.apiimportenvenv.hosts=['192.168.0.2','192.168.0.6']上面几行代码只是声明了你要执行Fabric任务的主机地址,但实际上并没有执行任何任务,所以我们定义一些任务。Fabric提供了一系列可以与远程服务器进行交互的方法。Fabric提供了很多方法,这里列举几个常用的:命令get——从远程机器下载一个或多个文件put——上传一个或多个文件到远程机器示例3:在多台机器上输出信息,新建fabfile.py文件如下#!/usr/bin/envpythonfromfabric。apiimportenv,runenv.hosts=['192.168.0.2','192.168.0.6']defecho():run("echo-n'Hello,youaretunedtoTecmint'")运行如下命令执行Fabric任务#fabechofabric:自动执行tasksonremoteLinuxmachines示例4:可以继续完善之前创建的执行uptime任务的fabfile.py文件,使其可以在多台服务器上运行uptime命令,还可以查看其磁盘使用情况,如下图所示:#!/usr/bin/envpythonfromfabric.apiimportenv,runenv.hosts=['192.168.0.2','192.168.0.6']defuptime():run('uptime')defdisk_space():run('df-h')保存并执行以下命令#fabuptime#fabdisk_spaceFabric:在多台服务器上自动执行任务在远程服务器上自动部署LAMP示例5:让我们尝试在远程服务器(Linux、Apache、MySQL/MariaDB和PHP)上部署LAMP我们将编写一个函数以使用root权限远程安装LAMP。在RHEL/CentOS或Fedora#!/usr/bin/envpythonfromfabric.apiimportenv,runenv.hosts=['192.168.0.2','192.168.0.6']defdeploy_lamp():run("yuminstall-yhttpdmariadb-serverphpphp-mysql")在Debian/Ubuntu或LinuxMint上#!/usr/bin/envpythonfromfabric.apiimportenv,runenv.hosts=['192.168.0.2','192.168.0.6']defdeploy_lamp():sudo("apt-getinstall-qapache2mysql-serverlibapache2-mod-php5php5-mysql")保存并执行以下命令:#fabdeploy_lamp注意:由于安装过程中会输出很多信息,所以本例中我们不提供屏幕gif现在您可以使用Fabric和图中所示的功能上面的例子来自动化Linux服务器上的管理任务。Fabric的一些有用的选项你可以运行fab-help来输出帮助信息,它列出了所有可用的命令行信息-fabfile=PATH选项允许你定义除fabfile.py之外的模块,如果你想使用指定的用户名登录到远程主机,请使用-user=USER选项如果您需要密码进行身份验证或sudo权限升级,请使用–password=PASSWORD选项如果您需要输出有关命令的详细信息,请使用–display=命令名选项使用--list输出所有可用任务使用--list-format=FORMAT选项格式化-list选项输出的信息,选项有short、normal、nested--config=PATH选项可以指定读取配置文件地址--colorize-errors可以显示彩色错误输出信息--version输出当前版本总结Fabric是一个功能强大且文档齐全的工具,新手也可以快速上手。阅读提供的文档可以帮助您更好地理解它。如果大家在安装和使用Fabric的过程中发现任何问题,可以在评论区留言,我们会及时回复。
