【Python】自动化部署神器fabric2

Fabric2是一个基于Python的SSH库,用于远程执行命令。它建立在invoke和paramiko之上,提供方便的API。本文介绍了如何安装、使用Connection和Group类进行单机和多机操作,包括自动响应输入请求和封装成函数的功能。并给出多机安装配置Docker的实用案例。
部署运行你感兴趣的模型镜像

简介

fabric2 是一个python(2.7,3.4+)的库,用来通过SSH远程执行shell命令,并返回有用的python对象。

它建立在 invoke 和 paramiko 库之上,同时扩展了他们的API以提供更多的功能。

https://www.fabfile.org/

安装与使用

1.安装

pip uninstall fabric
pip uninstall fabric3
pip install fabric2

2.Connection类

实现对单个主机的SSh连接,返回一个该主机的连接对象。通过该对象,对主机进行操作和管理。

类的属性:

host:主机名或IP地址,可用格式:user@host, host:port, user@host:port

user:登录用户名

port:(int)登录端口

config:登录配置文件

gateway:连接的网关或代理

forword_agent:(bool)是否开启agent_forwording

connect_timeout:(int)连接超时时间

connect_kwargs:(dict)提交连接参数的字典,多用于密码,密钥等。

inline_ssh_env:(bool)

类的方法:

run:执行命令,返回结果的属性有 stdout,exited,ok,command,connection 等

get:从远程下载文件

put:上传文件,put(src_path, remote= dst_path)

sudo:sudo远程执行命令

sftp:返回一个sftp对象

local:在本地执行shell命令

is_connected:此链接是否打开

open

open_gateway

close

create_session

forward_local

forward_remote

例子

from fabric import Connection

ssh_conn = Connection(host='xxx.xxx.xxx.xxx', user='root', connect_kwargs={'password': '***'})

3.Group类

连接多个服务器,组成一个group,一个group同时执行run命令时,会返回一个 GroupResult-dict,包含了每个服务器的运行结果。

例子:

from fabric import SerialGroup as Group

hosts = (
  		"dell@120.133.00.00:22", "dell@120.133.00.01:22"
)

pool = Group(*hosts,connect_kwargs={"password": "123"})

results = pool.run('uname -s')
for connection, result in results.items():
	print("{0.host}: {1.stdout}".format(connection, result))

4.自动响应程序的输出

比如运行sudo命令时,会要求输入代码,此时如果手动输入则显得很笨拙,fabric提供了自动响应输入请求的功能:

from invoke import Responder
from fabric import Connection
c = Connection('host')
passwd = "1234
sudopass = Responder(
	pattern=r'\[sudo\] password:',
	response='{passwd }\n',format(passwd = passwd),
)
c.run('sudo whoami', pty=True, watchers=[sudopass])

5.将功能封装成函数

def upload_and_unpack(ssh_conn ):
    c.put('myfiles.tgz', '/opt/mydata')
    c.run('tar -C /opt/mydata -xzvf /opt/mydata/myfiles.tgz')

实用案例

多机安装与配置Docker

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值