当涉及到管理远程机器和应用程序的部署,有几个命令行工具存在,虽然许多有一个常见的问题,缺乏详细的文档。
在本指南中,我们将介绍如何使用Fabric来改进服务器组的管理步骤。
使用Fabric自动执行Linux管理任务
Fabric是一个Python库和执行系统管理任务,例如在多台机器和应用程序部署执行SSH命令一个功能强大的命令行工具。
另请参阅 : 使用Shell脚本自动运行的Linux系统维护任务
有一个Python的工作知识可以用Fabric的时候,却可以肯定不会是必要的是有帮助的。
选择Fabric的原因:
- 简单
- 它有充分的文件
- 如果你已经是一个python的家伙,你不需要学习另一种语言。
- 易于安装和使用。
- 它的操作速度快。
- 它支持并行远程执行。
如何在Linux中安装Fabric Automation Tool
Fabric的一个重要特性是,您需要管理的远程计算机只需要安装标准的OpenSSH服务器。 在开始之前,您只需要在管理远程服务器的服务器上安装某些要求。
要求:
- Python 2.5+与开发标题
- Python-setuptools和pip(可选,但首选)gcc
Fabric采用PIP(强烈推荐)安装方便,但你也可能更愿意选择默认的包管理的yum , DNF或apt-get的安装包布,通常被称为织物或Python的织物 。
对于基于RHEL / CentOS的发行版,您必须EPEL软件库安装到系统上启用安装包布。
# yum install fabric [On RedHat based systems] # dnf install fabric [On Fedora 22+ versions]
对于Debian和它的衍生物,如Ubuntu和薄荷用户根本就易于得到如图所示安装包Fabric:
# apt-get install fabric
如果你想安装Fabric开发版本,你可以用PIP来获取最新的主分支。
# yum install python-pip [On RedHat based systems] # dnf install python-pip [On Fedora 22+ versions] # apt-get install python-pip [On Debian based systems]
一旦pip已经成功安装,您可以使用pip来抓取最新版本的fabric,如图所示:
# pip install fabric
如何使用Fabric自动执行Linux管理任务
所以,让我们开始如何使用Fabric。 在安装过程中,名为Python脚本fab
加入到一个目录在你的路径。 用布时, 工厂脚本做所有的工作。
在本地Linux机器上执行命令
按照惯例,你需要创建一个名为Python文件,开始fabfile.py
使用你喜欢的编辑器。 请记住,您可以根据需要为此文件指定不同的名称,但您需要指定文件路径,如下所示:
# fabric --fabfile /path/to/the/file.py
Fabric使用fabfile.py
来执行任务。 fab文件应位于运行结构工具的同一目录中。
例1:让我们创建一个基本Hello World
第一。
# vi fabfile.py
在文件中添加这些代码行。
def hello(): print('Hello world, youcl community')
保存文件并运行以下命令。
# fab hello
织物工具用法
现在让我们来看一个fabfile.py在本地计算机上执行uptime命令的例子。
例2:打开一个新fabfile.py文件,如下所示:
# vi fabfile.py
并在文件中粘贴以下代码行。
#! /usr/bin/env python from fabric.api import local def uptime(): local('uptime')
然后保存文件并运行以下命令:
# fab uptime
Fabric:检查系统正常运行时间
在远程Linux计算机上执行命令以自动执行任务
织物API使用配置字典是Python的等价称为关联数组的env
,其中存储控制布料做了什么价值。
该env.hosts
是要在其上运行的Fabric任务服务器的列表。 如果您的网络是192.168.0.0,并希望管理主机192.168.0.2 192.168.0.6,并与你的fabfile,您可以配置env.hosts如下:
#!/usr/bin/env python from fabric.api import env env.hosts = [ '192.168.0.2', '192.168.0.6' ]
上面的代码行仅指定您将运行结构任务的主机,但什么都不做。 因此,您可以定义一些任务,Fabric提供了一组可用于与远程机器交互的函数。
虽然有很多功能,最常用的是:
- 运行 -运行在远程机器上的shell命令。
- 地方 -它运行在本地计算机上的命令。
- Sudo -运行在远程机器上的shell命令,以root权限。
- 获取 -这下载从远程计算机上的一个或多个文件。
- 放 -这上传一个或多个文件到远程计算机。
例3:在多台计算机创建一个呼应的消息fabfile.py
如下面的之一。
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def echo(): run("echo -n 'Hello, you are tuned to youcl ' ")
要执行任务,请运行以下命令:
# fab echo
Fabric:在远程Linux上自动执行Linux任务
例4:可以提高fabfile.py
您前面创建到本地计算机上执行uptime命令,使其运行uptime命令,并使用检查磁盘使用df命令在多台机器如下:
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def uptime(): run('uptime') def disk_space(): run('df -h')
保存文件并运行以下命令:
# fab uptime # fab disk_space
Fabric:在多个Linux系统上自动执行任务
在远程Linux服务器上自动部署LAMP
例4:让我们看一个例子来部署LAMP(Linux操作系统,Apache,MySQL和/ MariaDB的和PHP)的远程Linux服务器上的服务器。
我们将编写一个函数,允许使用root权限远程安装LAMP。
对于RHEL / CentOS和Fedora
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def deploy_lamp(): run ("yum install -y httpd mariadb-server php php-mysql")
用于Debian / Ubuntu和Linux Mint
#!/usr/bin/env python from fabric.api import env, run env.hosts = ['192.168.0.2','192.168.0.6'] def deploy_lamp(): sudo("apt-get install -q apache2 mysql-server libapache2-mod-php5 php5-mysql")
保存文件并运行以下命令:
# fab deploy_lamp
注 :由于产量大,它不可能为我们创造了这个例子截屏(动画GIF)。
现在,您可以能自动Linux服务器管理任务使用织物及其上面给出的特点和实例...
与织物一起使用的一些有用的选项
- 您可以运行晶圆厂-help查看帮助信息和可用的命令行选项一个长长的清单。
- 一个重要的选项是-fabfile = PATH,可以帮助你指定不同的Python模块文件导入其他然后fabfile.py。
- 要指定用户名连接到远程主机时使用,使用-user = USER选项。
- 用于身份验证和/或sudo密码,请使用-password =密码选项。
- 打印有关命令名称详细信息,使用-display = name选项。
- 要查看格式使用-list选项,选择:短,正常,嵌套,使用-list格式FORMAT =选项。
- 要打印可能的命令和退出的名单,包括-list选项。
- 您可以指定配置文件的位置,使用-config = PATH选项来使用。
- 为了显示彩色错误输出,使用-colorize-错误 。
- 要查看程序的版本号并退出,使用-version选项。
概要
Fabric是一个强大的工具,有良好的文档,并为新手提供了方便的使用。 您可以阅读完整的文档以获得更多的了解。 如果您有任何信息要添加或导致您在安装和使用过程中遇到的任何错误,您可以发表评论,我们会找到解决方法。
参考: Fabric文档