iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Fabric:Python远程部署工具
  • 323
分享到

Fabric:Python远程部署工具

工具FabricPython 2023-01-31 00:01:11 323人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

关于FabricFabric是一个python库和命令行工具,旨在为应用部署和系统管理任务的ssh的流水线式操作,使之更加高效和方便。Fabric提供了一套基本的执行本地和远程shell命令、上传和下载文件的操作,包括一些辅助函数,例如驱动

关于Fabric


Fabric是一个python库和命令行工具,旨在为应用部署和系统管理任务的ssh的流水线式操作,使之更加高效和方便。Fabric提供了一套基本的执行本地和远程shell命令、上传和下载文件的操作,包括一些辅助函数,例如驱动正在运行的用户输入或者放弃执行。

Fabric通过把大量频繁使用的SSH操作写入到一个脚本中(fabric.py),来远程执行一些应用部署或者系统维护的任务。Fabric是类似paramiko的一个库,是对paramiko的再次封装,所以比使用paramiko更简单。

Fabric的优点:

1. 角色定义

2. 代码易读

3. 封装了本地、远程操作

4. 参数灵活,能偶动态指定host/role等,还有并发执行(基于multiprocessing)

5. 完整的日志输出


安装Fabric


Fabric的安装很简单,可以直接使用pip或者easy_install安装到当前Python环境中,或者下载最新的源码使用"python setup.py xxx"的方式来安装:

#pip install fabric


使用Fabric


1 Fabric通过命令行工具fab来执行定义在fabfile.py中的任务,常用的配置和函数如下


1. 常用的fab命令选项和参数:

-l    显示可用的task

-H    指定host,多个host用逗号分开

-R    指定role,多个role用逗号分开

-P    并分数,默认是串行

-w    warn_only,默认为遇到异常直接放弃执行并退出

-f    指定入口文件,fab默认入口文件是:fabfile/fabfile.py


2. fabfile.py文件中常用配置和函数:

env.host        主机ip,也可以使用fab选项-H参数来指定

env.passWord    SSH密码,若已经设置好无密码登录,则可以忽略

env.roledefs    角色分组,如:{'WEB': ['x', 'y'], 'db': ['z']}

local('pwd')    执行本地命令

lcd('/tmp')        切换本地目录

cd('/tmp')        切换远程目录

run('uname -s')        执行远程命令

sudo('service Httpd restart')    执行远程sudo,注意pty选项


2 任务函数


Fabric中的任务就是一个个Python函数,通过将上述的函数封装到某一个函数中来执行相应的任务

示例:

#cat fabfile.py

from fabric.api import run

def host_type():

   run('uname -s')


def hello(name="jayzhou"):

   print("Hello %s!" % name)


def combine(name="jayzhou"):

   hello(name)

   host_type()

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

#fab hello:name=RanGo


3. 管理远程服务


1. 获取远程服务器版本信息

#cat fabfile.py

from fabric.api import env

from fabric.api import cd

from fabric.api import run

from fabric.api import local

from fabric.api import get

from fabric.api import put


env.hosts = ['192.168.56.101', '192.168.56.102']

env.user = 'root'

env.password = "password"


def get_version():

   local('cat /etc/issue')

   run('cat /etc/issue')

   with cd('/root/'):

       put('/home/rango/test.txt', 'test.txt', mode=0755)

       get('hello_world.txt')

   run('ls')


def get_host_name():

   run('hostname')

运行:

#fab -f fabfile.py get_version


2. 管理远程httpd服务:

#cat fabfile.py

from fabric.api import *

env.hosts = ['192.168.56.101', '192.168.56.102']

env.user = 'root'

env.password = "password"


@task

def httpd_start():

   ''' httpd start '''

   sudo('service httpd start')


@task

def httpd_stop():

   ''' httpd stop '''

   sudo('service httpd stop')

查看可用命令:

#fab -f fabfile.py --list

Available commands:

   httpd_start  httpd start
   httpd_stop   httpd stop

执行:

#fab -f fabfile.py httpd_start


3. 基于角色

#cat fabfile.py

#!/usr/bin/env python
#coding:utf-8

from fabric.api import *
env.roledefs = {'httpd': ['192.168.56.101', '192.168.56.102'], 'Mysql': '192.168.56.103'}

@task
def mysql_start():
   '''mysql start'''
   sudo('/etc/init.d/mysql start')

@task
def httpd_start():
   '''httpd start'''
   sudo('/etc/init.d/httpd start')

@task
def httpd_stop():
   '''httpd stop'''
   sudo('/etc/init.d/httpd stop')

查看可用命令:

#fab -f fabfile.py --list

Available commands:

   httpd_start  httpd start
   httpd_stop   httpd stop
   mysql_start  mysql start

执行:

#fab -f fabfile.py -R httpd httpd_start
#fab -f fabfile.py -R mysql mysql_start


4. 直接使用Fabric库

#cat fabfile.py

#!/usr/bin/env python
#coding:utf-8

from fabric.state import env, connections
from fabric.tasks import execute
from fabric.api import run

env.user = 'root'
env.password = 'password'
hosts = ['192.168.56.101', '192.168.56.102']

def myls(path):
   run('ls %s' % path)

execute(myls, path='/root/', hosts=hosts)

for key in connections.keys():
   connections[key].close()
   del connections[key]

在这一段代码中使用env来获取和设置环境参数,使用execute执行自定义的函数,然后使用connections来管理连接。其中execute通过传递参数可以在fab命令中指定目录。

执行:

#fab -f fabfile.py myls:path=/root

                                                                                                                               ——游响云停



--结束END--

本文标题: Fabric:Python远程部署工具

本文链接: https://www.lsjlt.com/news/182885.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Fabric:Python远程部署工具
    关于FabricFabric是一个Python库和命令行工具,旨在为应用部署和系统管理任务的SSH的流水线式操作,使之更加高效和方便。Fabric提供了一套基本的执行本地和远程shell命令、上传和下载文件的操作,包括一些辅助函数,例如驱动...
    99+
    2023-01-31
    工具 Fabric Python
  • C#中如何使用远程调试和远程部署工具
    标题:C#中远程调试和远程部署工具的使用技巧摘要:本文将介绍如何在C#开发中使用远程调试和远程部署工具。通过远程调试,您可以在另一台计算机上调试代码,而无需在本地机器上运行整个应用程序。远程部署工具则可以帮助您将应用程序部署到远程服务器上。...
    99+
    2023-10-22
    远程调试 C#编程 远程部署
  • ASP 网站部署工具与其他部署工具的对比
    本文比较了 ASP 网站部署工具和一些其他流行的网站部署工具,包括 Visual Studio、IIS Manager、WebMatrix 和 Octopus Deploy。我们将比较这些工具的功能、易用性和价格。 Visual Stud...
    99+
    2024-02-07
    ASP 网站部署工具, 网站部署, 自动化部署, 发布工具, Web Deploy
  • Centos7部署nmon监控工具
    Nmon是一款计算机性能系统监控工具,因为它免费,体积小,安装简单,耗费资源低,广泛应用于AIX和Linux系统上传软件包...
    99+
    2023-06-05
  • Kubernetes集群部署工具大全
    1. kubeadm: 是Kubernetes官方推荐的部署工具,用于快速设置单主机Kubernetes集群。2. kops: 是一...
    99+
    2023-09-22
    Kubernetes
  • python 自动化部署工具-fabri
    今天闲来无事,来介绍一下利用fabric 来部署代码包。 安装 pip install fabric fabric 默认引用fafile.py,指定执行文件加参数-f,如:fab -H 127.0.0.1 -f fabtest.py te...
    99+
    2023-01-31
    工具 python fabri
  • python 自动化部署工具Fabric
    自动化部署工具Fabric简介    Fabric就是一个帮助我们在上线时减少重复/繁琐操作的自动化部署利器,对于缺乏成熟运维平台的众多小公司的运维或开发人员来说,掌握这个工具是有必要的。1. Fabric是什么Fabric官方文档的描述如...
    99+
    2023-01-31
    工具 python Fabric
  • nGrinder性能工具源码安装部署过程
    目录一、前言 二、源码下载三、本地配置四、IDEA 设置五、启动验证六、使用源码调试简单脚本七、模仿编写脚本八、小结nGrinderr(version: 3.4.1)是NA...
    99+
    2024-04-02
  • Centos7怎么部署nmon监控工具
    今天小编给大家分享一下Centos7怎么部署nmon监控工具的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。nmon是一种在A...
    99+
    2023-06-28
  • java学习DongTai被动型IAST工具部署过程
    目录01、环境准备 02、快速安装与部署03、初步测试体验我在5月份的时候就申请了洞态IAST企业版内测,算是比较早的一批用户了。聊聊几个我比较在意的问题,比如API接口覆...
    99+
    2024-04-02
  • Gradio快速部署工具怎么应用
    这篇文章主要介绍“Gradio快速部署工具怎么应用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Gradio快速部署工具怎么应用”文章能帮助大家解决问题。1.分享演示share=True通过在方法中...
    99+
    2023-07-05
  • 怎么使用Docker部署webssh工具sshwifty
    这篇文章主要讲解了“怎么使用Docker部署webssh工具sshwifty”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Docker部署webssh工具sshwifty”吧!一、s...
    99+
    2023-07-05
  • 云原生教程之使用Docker部署webssh工具sshwifty
    目录一、sshwifty介绍1.sshwifty简介2.shwifty 特点二、检查本地docker环境1.检查docker版本2.检查docker状态三、下载sshwifty镜像四...
    99+
    2023-03-06
    docker webssh docker部署webssh docker 工具sshwifty
  • 开源虚拟化工具VirtualBox安装部署
    什么是Virtualbox  VirtualBox是一款由Oracle开发和维护的免费开源虚拟化软件,用于在一台计算机上创建和管理多个虚拟机。它允许用户在单个物理计算机上运行多个操作系统,例如Windows、Linux、macOS等。V...
    99+
    2023-10-07
    virtualbox 虚拟化
  • 如何使用 ASP 网站部署工具解决网站部署难题
    ASP Website Deployment Tool是一个微软官方提供的ASP网站部署工具,它可以帮助开发者轻松地将ASP网站部署到生产环境,无需手动执行复杂的部署步骤。该工具支持多种部署方式,包括FTP、UNC路径、WebDeploy...
    99+
    2024-02-07
    ASP 网站部署 部署工具 自动化部署 生产环境
  • K8S怎么部署Kafka界面管理工具
    本篇内容介绍了“K8S怎么部署Kafka界面管理工具”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!kafka-manager 是雅虎开源的a...
    99+
    2023-06-29
  • 部署statspack工具(二)之解决方案2
    解决方案二:在emp2的empno列上面创建索引,再执行share_pool_sql_1.sh脚本,查看sp报告8.1在emp2的empno列上创建索引sys@TESTDB12>create inde...
    99+
    2024-04-02
  • tomcat监控工具probe的简介和部署
    这篇文章主要介绍“tomcat监控工具probe的简介和部署”,在日常操作中,相信很多人在tomcat监控工具probe的简介和部署问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”tomcat监控工具probe...
    99+
    2023-06-04
  • SSH连接与自动化部署工具parami
    paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方法。可以实现远程命令执行,文件传输,中间SSH代理等功能,相对于Pexpect,封装层次更高。 pip install Paramiko http://www...
    99+
    2023-01-31
    工具 SSH parami
  • Gradio快速部署工具quickstart怎么应用
    这篇文章主要介绍了Gradio快速部署工具quickstart怎么应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Gradio快速部署工具quickstart怎么应用文章都会有所收获,下面我们一起来看看吧。引...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作