我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何利用Fabric自动化你的任务

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何利用Fabric自动化你的任务

首先让我们首先看一个例子。我们知道在*NIX下面,uname命令是查看系统的发行版。

可以写这样一个Fabric脚本:


from fabric.api import run
def host_type():
 run('uname -s')

将上面的脚本保存为fabfile.py,就可以通过fab命令在多个主机上执行host_type脚本了:


$ fab -H localhost,linuxbox host_type
[localhost] run: uname -s
[localhost] out: Darwin
[linuxbox] run: uname -s
[linuxbox] out: Linux

执行过程中可能需要你输入系统密码。

安装

如果你看到这里了,说明你开始对Fabric感兴趣了。但是上述操作在你那里无法执行,因为你还没有安装Fabric。安装Fabric很简单,可以用pip或者easy_install,也可以下载原代码安装。

任务函数

很好,安装Fabric并没有难住你。可能你已经成功的执行了前面的任务,现在让我们更深入一些。

Fabric中的任务就是一个python函数,姑且让我们称之为“任务函数”。既然是python函数,那么对函数的一些用法也适用于任务函数。比如传递参数、互相调用、返回值等等。

首先看一个传递参数的例子:


def hello(name="world"):
 print("Hello %s!" % name)

在执行任务的时候,可以通过fab的命令行参数为任务函数传递参数:


$ fab hello:name=Holbrook
Hello Holbrook!

组合任务的例子如下:


from fabric.api import run
def host_type():
 run('uname -s')

def hello(name="world"):
 print("Hello %s!" % name)

def composite(name="world"):
 hello(name)
 host_type()

Fabric提供的命令

前面我们见过了fabric.api模块中的run函数,其功能是在远端主机上执行命令。fabric.api中还提供了local函数,用于执行本地(Fabric所在的主机)命令。

如下:


from fabric.api import local
def lslocal():
 local('ls')

类似远端命令和本地命令,Fabric也区分远端目录和本地目录。Fabric提供的对远端和本地目录的操作分别是cd和lcd。如果你用过命令行的ftp,这很容易理解。

让我们看一个例子:


def filepath():
 remote_dir = '/opt/xxx'
 with cd(remote_dir):
  run("touch README")

上面代码的功能是进入远端的/opt/xxx目录,并创建一个README文件。

Fabric还提供了很多的命令,比如文件操作等。

管理服务器连接

前面的例子中,都需要在fab命令行参数中指定server。当要管理大量服务器时很麻烦。Fabric提供了环境变量的字典env,其中就包含了hosts字典项,可以定义需要连接的server。

如下:


from fabric.api import env, run

env.hosts = ['host1', 'host2']
def mytask():
 run('ls /var/www')

也可以为每个任务单独指定要执行该任务的host列表:


from fabric.api import env, run

def set_hosts():
 env.hosts = ['host1', 'host2']

def mytask():
 run('ls /var/www')

这样执行 fab set_hosts mytask时,就可以为set_hosts中指定的两个host执行mytask任务了。如果你懒得写函数,在fab命令行中指定也是一样的:


fab mytask:hosts="host1;host2"

为了更方便的执行批量任务,Fabric中还定义了Role,有兴趣可以阅读其官方文档。

管理SSH密码、用户、端口

尽管更推荐使用SSH公钥认证,但是Fabric还是提供了管理密码的机制。Fabric提供了两层密码。

如果你的server有相同的密码,可以在env.password中设置默认的密码;如果server密码不同,还可以在env.passwords中设置(host,password)对,为每个server设置单独的ssh密码。

上面的host字符串采用这种格式:username@hostname:port。所以,在指定ssh密码的同时,也就指定了ssh用户。同密码一样,你也可以在env.user中指定一个默认的用户。如果都没有指定,执行fab命令时会提示你输入密码。

使用Fabric,你可以管理一系列host的SSH连接(包括主机名,用户,密码),定义一系列的任务函数,然后灵活的指定在哪些host上执行哪些任务。这非常使用于需要管理大量host的场景,比如运维,私有云管理,应用自动化部署等。

总结

本文只是一篇入门文档,远没有体现出Fabric的强大。实际上,Fabric还包括大量的功能,比如Role的定义,远程交互及异常处理,并发执行,文件操作等,并且不仅仅局限于命令行方式,可以在你的应用中调用Fabric。

以上就是本文的全部内容了,希望本文的内容能够引起你对Fabric的兴趣,并在你的实际应用中解决问题。如果有疑问大家可以留言交流。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何利用Fabric自动化你的任务

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何利用Fabric自动化你的任务

首先让我们首先看一个例子。我们知道在*NIX下面,uname命令是查看系统的发行版。 可以写这样一个Fabric脚本:from fabric.api import run def host_type():run('uname -s')将上面
2022-06-04

如何使用fabric自动化发版

这篇文章给大家分享的是有关如何使用fabric自动化发版的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。功能:使用fabric自动化发版#-*-coding:utf8-*-from fabric.api impor
2023-06-04

如何进行常见的linux自动化任务

今天就跟大家聊聊有关如何进行常见的linux自动化任务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实现“自动化”有如下好处:节省人力,一个脚本就够了。在夜晚自动执行可以避开网站流量
2023-06-15

如何利用Kickstart自动化安装CentOS

这篇文章主要讲解了“如何利用Kickstart自动化安装CentOS”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用Kickstart自动化安装CentOS”吧!前言因为需要在浪潮的x
2023-06-10

PostgreSQL中的自动化任务和调度如何实现

在PostgreSQL中,可以通过编写存储过程或函数来实现自动化任务和调度。这些存储过程或函数可以被安排在不同的时间点自动执行,从而实现定时任务的功能。另外,PostgreSQL还提供了一些工具和扩展来帮助进行任务调度,如pgAgent和
PostgreSQL中的自动化任务和调度如何实现
2024-04-09

如何使用Shell脚本自动化Linux系统维护任务

这篇文章将为大家详细讲解有关如何使用Shell脚本自动化Linux系统维护任务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。系统管理员通常会使用sehll脚本解决工作中重复的工作,shell
2023-06-28

Nagios如何处理自动化任务和脚本执行

Nagios本身并不直接处理自动化任务和脚本执行,但可以通过插件和脚本来实现自动化任务的监控和执行。自动化任务监控:可以编写一个监控插件或脚本,用于监控自动化任务的运行状态和结果。当任务出现异常或失败时,Nagios可以通过警报通知管理员及
Nagios如何处理自动化任务和脚本执行
2024-03-15

阿里云服务器定时跑Python实现自动化任务的利器

阿里云服务器是一种强大的云计算服务,可以为用户提供稳定可靠的计算资源。而Python作为一种流行的编程语言,具有简单易学、可扩展性强等特点。本文将介绍如何利用阿里云服务器和Python实现定时任务,从而实现自动化操作。1.安装Python环境首先,在阿里云服务器上安装Python环境是必要的。可以通过以下命令在终
阿里云服务器定时跑Python实现自动化任务的利器
2024-01-29

Linux Systemd Crontab教程:学习如何自动化任务管理

Systemd是一个用于管理Linux系统上的守护进程的工具。它可以帮助您自动化任务,包括定期运行脚本和命令。Crontab是一种常用的任务调度工具,可以让您在指定的时间间隔内运行脚本或命令。以下是如何使用Systemd和Crontab自动
2023-10-09

利用Python脚本在Linux平台下实现任务调度与自动化

利用Python脚本在Linux平台下实现任务调度与自动化在现代的信息技术环境下,任务调度和自动化已经成为了大多数企业必备的工具。而Python作为一种简单、易学且功能丰富的编程语言,在Linux平台下实现任务调度与自动化是非常方便和高效的
2023-10-22

详解如何利用Python实现报表自动化

这篇文章主要介绍了报表自动化的流程,并教你用Python实现工作中的一个报表自动化实战,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
2023-05-14

如何利用Gitlab和Kubernetes实现自动化部署

GitlabK8s自动化部署随着云计算和容器化技术的普及,企业越来越多地将应用程序部署在 Kubernetes 上。而为了更好地管理 Kubernetes 环境中的应用程序,越来越多的企业选择使用 Gitlab 和 Kubernetes 的
2023-10-22

如何在MariaDB中实现自动化任务和定时作业

在MariaDB中实现自动化任务和定时作业可以使用以下两种方法:使用事件调度器(Event Scheduler):MariaDB提供了一个内置的事件调度器功能,可以在数据库中创建和管理事件。通过创建事件,可以定期执行SQL语句或存储过程。可
如何在MariaDB中实现自动化任务和定时作业
2024-04-09

如何在AmazonAurora上配置自动化数据库维护任务

在Amazon Aurora上配置自动化数据库维护任务可以通过使用Amazon RDS控制台或AWS CLI来完成。以下是配置自动化数据库维护任务的步骤:登录到AWS Management Console,并打开Amazon RDS控制台。
如何在AmazonAurora上配置自动化数据库维护任务
2024-04-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录