- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章python三大神器之fabric使用教程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
fabric 是一个python包 是一个基于ssh的部署工具包 。
通常用来对网站 微服务等等的批量部署 例如 我有5台线上服务器 可以通过一台对着5台分发,实现自动部署的目的.
简单介绍下 fabric的常用命令 。
常用命令 。
1
2
3
4
|
lcd(
dir
): 进入本机某目录
local(cmd): 本机上执行命令
cd(
dir
): 进入服务器某目录
run(cmd):服务器上执行命令
|
Fabric 。
Fabric是一个python的远程执行shell的库,同时它也是一个命令行工具。它提供了丰富的同 SSH 交互的接口,可以用来在本地或远程机器上自动化、流水化地执行 Shell 命令.
安装Fabric 。
Fabric的官网是 www.fabfile.org ,源码托管在 Github 上。你可以clone源码到本地,然后通过下面的命令来安装。但是在源码安装前,你必须先将Fabric的依赖包 Paramiko 装上.
python setup.py develop 。
同时也可以使用pip安装,因为fabric是python的一个第三方库,只需一条命令即可:
pip install fabric 。
python3 安装时使用的是fabric3 :( 安装fabric3之前,需要先卸载fabric.) 。
fabric 不只是一个Python 模块,fabric 还是一个命令行工具,可以使用fab -h查看帮助信息 。
1
2
3
4
|
E:\my_data\hk
-
project>fab
-
V
Fabric3
1.14
.post1
Paramiko
2.4
.
2
E:\my_data\hk
-
project>fab
-
h
|
入门使用 。
fabric的使用方式是通过编写一个python文件,该文件中包含多个函数,然后使用fab命令调用这些函数,做相应的任务。这些函数在fabric中称为task.
1
2
3
4
5
6
|
# filename:abc.py
from
fabric.api
import
*
def
task1():
print
(
"hello"
)
def
hello():
print
(
"hello world"
)
|
写好这个python文件后,在当前目录的路径下使用fab工具执行文件中的函数 。
1
2
3
|
[root@localhost python文件所在的目录]
# fab -f abc.py hello
hello world
# -f 指定fabfile文件,默认为fabfile.py,若文件名是当前目录下的fabfile.py则无需指定
|
任务参数 。
此时你可能会想,如果这个函数有参数怎么办呢?应该如何传递参数给函数呢?Fabric 支持 Shell 兼容的参数用法: <任务名>:<参数>, <关键字参数名>=<参数值>,... 用起来就是这样.
1
2
|
def
hello(name
=
"world"
):
print
(
"hello {}"
.
format
(name))
|
我们可以这样去指定参数 。
1
2
3
|
$ fab hello:name
=
Jeff
# 或者 fab hello:Jeff
hello Jeff
Done.
|
小试牛刀 。
现在我们假设需要写一个fabfile.py,能够在每次web项目代码更新后使用git提交并远程服务器拉去最新代码并运行,需求描述清楚了,开干吧! 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# fabfile.py
# 这里建议将该文件放入项目文件的根目录中,方便git提交
from
fabric.api
import
local
def
test():
local(
'python manage.py test myapp'
)
# 测试是否能正常运行
def
commit():
local(
'git add -p && git commit -m "for test"'
)
def
push():
local(
'git push'
)
def
prepare_deploy():
test()
commit()
push()
|
这个 prepare_deploy 任务可以单独调用,也可以调用更细粒度的子任务.
故障 。
Fabric 会检查被调用程序的返回值,如果这些程序没有干净地退出,Fabric 会终止操作。我们什么都不用做,Fabric 检测到了错误并终止,不会继续执行 commit 任务.
我们也可以对故障进行一定的处理和判断 。
1
2
3
4
5
6
7
8
9
|
from
fabric.api
import
local, settings, abort
from
fabric.contrib.console
import
confir
def
test():
with settings(warn_only
=
True
):
result
=
local(
'./manage.py test my_app'
, capture
=
True
)
# result.return_code返回码(0/1)和result.failed
if
result.failed
and
not
confirm(
"Tests failed. Continue anyway?"
):
# confirm判断用户输入
abort(
"Aborting at user request."
)
# 指定错误退出信息
# 一个名为 warn_only 的设置(或着说 环境变量 ,通常缩写为 env var )可以把退出换为警告,以提供更灵活的错误处理。如果设置为False,则一条命令运行失败会就会退出,不再执行后面的命令。
|
建立连接 。
终于到了连接了,这个工具主要作用就是在远程执行命令呀,学会了这个,我们就可以在本地执行远程服务器的命令了.
1
2
3
4
5
|
from
fabric.api
import
*
env.hosts
=
[
'root@192.168.10.11:22'
]
def
deploy():
run(
'ls'
)
# run()用于执行远程命令,local()执行本地命令
# 执行后会提示你输入密码,输入密码即可
|
至此,入门结束,后续还有更多api的讲解,敬请关注! 。
参考链接:
fabric官方中文文档: https://fabric-chs.readthedocs.io/zh_CN/chs/tutorial.html 。
总结 。
以上所述是小编给大家介绍的python三大神器之fabric使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢! 。
原文链接:https://www.cnblogs.com/welisit/p/10995357.html 。
最后此篇关于python三大神器之fabric使用教程的文章就讲到这里了,如果你想了解更多关于python三大神器之fabric使用教程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我刚刚偶然发现Fabric并且文档并没有真正说明它是如何工作的。 我有根据的猜测是您需要在客户端和服务器端都安装它。 Python 代码存储在客户端,并在命令运行时通过 Fabric 的有线协议(pr
以下是我对 Hyperledger Fabric 系统的理解。如果有任何不正确的地方,请告诉我。 1) 所以我们有同行(背书人、 anchor 人、将军(拥有分类帐的人)、排序人)。此外,当我们设置结
我部署了一个持久性级别为 Silver 的全新 Service Fabric 集群,fabric:/System/InfrastructureService/FE 服务运行状况不佳,并出现以下错误:
我对使用 Fabric 很感兴趣,api 在未连接到互联网时如何工作? 我发现 firebase(与此工具类似的工具)会将数据存储在本地,然后对服务器进行批量更新。但是,超过 72 小时的任何内容都不
Fabric CA Server 和 Fabric CA Client 的功能是什么? Fabric CA 服务器和 Fabric CA 客户端的角色是什么? 谢谢 最佳答案 Fabric CA 提供
我想在不同的环境中使用相同的应用程序,我在 documentation 中找到了它, Apps with Multiple Environments Let’s say you have an app
我目前正在尝试学习 Hyperledger Fabric,我设法了解了如何设置网络(Orderer、Peers 等),但现在是链代码的一部分。 但是,我发现两个不同的 git 存储库(据我所知)可用于
我在 following this tutorial 时遇到错误 cannot convert from 'System.Fabric.StatelessServiceContext' to 'Sys
在我没有改变任何东西之前它可以工作,但今天我收到了这个错误,这里是我的 gradle buildscript { repositories { mavenCentral() maven
Fabric beta 手动分发有时不会发送邀请电子邮件,即使在它向该人显示“已邀请”的网页中也是如此。如果我点击重新发送邀请,那个人就会收到。我的 QA 团队人员必须一直来找我重新发送邀请。我知道
默认情况下,Hyperledger Fabric 在将许多证书保存到区 block 链之前将其存储在交易中。无论如何或任何想法/技术来最小化区 block 链中的交易大小? 任何想法都非常有用! 最佳
我是 Hyperledger Fabric 的新手。我正在阅读 Fabric 的文档最新版本,但我不清楚 Fabric 的共识。 Fabric 使用的共识是什么?它是如何工作的?请解释。 最佳答案 我
我是 Hyperledger Fabric 的新手,我正在尝试在本地向服务器注册 Fabric 客户端。这是我到目前为止所做的。 go get -u github.com/hyperledger/fa
Hyperledger Fabric 中链和状态数据库的主要区别是什么。我很困惑它们是否相同。 最佳答案 Hyperledger Fabric 中有两个“存储”数据的地方: 账本 状态数据库 账本是真
我尝试将图像上传到分类帐中(将图像转换为 base64 字符串并将其作为交易中的 arg 传递)。 当我发送大小为 30 kb 的图像时,它工作正常,但是对于 100 kb 的图像,我的交易失败了,指
我正在尝试在初始化 Fabric CA 服务器后注册管理员: fabric-ca-server init -b “admin:adminpw” 并启动 CA 服务器: fabric-ca-serve
我正在使用来自 super 账本fabric firstsample的cryptogen工具,它未在 crypto-config/peerorganisation/org1.example.com/m
我离开了一家公司,用于访问 Fabric 的电子邮件已被删除。 现在我在同一家公司工作,他们用相同的句柄重新创建了电子邮件。我不知道这是否是问题所在,但我没有收到任何包含报告的电子邮件,也没有收到 B
如果我有 1 个组织 orgA ,在这个组织下我有 2 个用户:user1和 user2 , 在 orgA 中也有 1 个对等点,让我们称之为 peer0 . 现在想象一下,user1的证书在orgA
全部, 据我所知,在 Hyperledger Fabric 环境中,orderer 将消息传递给 peer。如果有离线对等。恢复到 ON-LINE 时,消息如何传递给对端? orderer如何知道pe
我是一名优秀的程序员,十分优秀!