Fabric 自动化部署(套娃)的终极方案

简介: Fabric 自动化部署(套娃)的终极方案

Fabric 自动化部署(套娃)的终极方案

这次想跟大家分享的是Fabric,原因是,之前我的博客都是使用Hexo来生成的,Hexo是一个静态的博客渲染框架,是基于node.js的。上手难度>一般,通过托管的github,很快每个人都可以拥有一个美观的静态博客,类似这样(moshiwei.github.io)青涩又中二的大学时光。

最近发现了新的hugo,是基于Go的静态博客框架,号称目前最快。

既然是静态博客,那就追求沉浸式的写作,如果能在任何地方,完成写作,一键部署完成渲染,这才是沉浸式写作体验。为了追求这种沉浸,开

始学习Fabric。

本地远程,两个扳手

注意,现在的fabric其实是属于fabric2的release了,没有和fabric1.x达到完全统一的功能开发和升级。有些已经被优化,或者删除了,Invoke也单独剥离出来了,Invoke的前身就是fabric1.x他们的联系和爱恨情仇,文档也写了,有时间可以看看。

Fabric提到,fabric是由其他几个库组成了,但在顶部封装了自己的层,用户的依赖大部分直接从fabric包种导入,但有时候也可以从invoke和paramiko导入

Invoke and Paramiko

这两个包我要着重介绍一下。

  • Invoke,实现了命令行解析,组织任务,和运行shell命令,主要任务就是在本地执行命令。(我还为了熟悉他单独写了一篇介绍文章,包含>实例)
  • paramiko,实现了中低层的SSH基本功能,SSH链接,SFTP会话,SSH key的管理等(可以配置免密登录)

是不是很有趣,fabric套娃了一个强力的本地助手和一个强力的远程助手

Fabric做了什么?

  1. 继承了Invkoe的context和command-runner,将他们包装在paramiko的原始接口中,
  2. 使用了Paramiko的ssh_config解析机制拓展了Invoke的配置系统;
  3. 实现了自己的高级接口,比如端口转发,上下文管理器

由于我只使用过Paramiko做过一些自动化任务(Paramiko可以实现到远程server的shell命令,密码登录,免密登录,sftp文件传输,非常好用>,唯一的不好就是如果需要对标准输出,标准错误做解析的话,需要自己进一步封装,稍后介绍Fabric其实做到了这一点)。Invoke没用过,但

看上去fabric让他们相互成就了,很强。

简单实例

最基本的用例就是利用Fabric到远程server执行shell命令,然后分析执行的结果,默认情况下,远程终端的打印会直接显示在你的终端上,也>就是说远程的stdout.decode()会直接返回(起码节省几行代码)。

>>> from fabric import Connection
>>> c = Connection('web1')
>>> result = c.run('uname -s')
Linux
>>> result.stdout.strip() == 'Linux'
True
>>> result.exited
0
>>> result.ok
True
>>> result.command
'uname -s' 
>>> result.connection
<Connection host=web1>
>>> result.connection.host
'web1'

Connection的其他实例化例子

Connection(host='web1', user='deploy', port=2202)

Connection('deploy@web1:2202')

小结

其实官网把这个介绍放在最前面我觉得很好,因为可能很多人做过这两个前置任务,对内容和用法都很熟悉,对于快速入手fabric有很大的帮助

,后面我会介绍常用功能的fabric实现

reference

https://docs.fabfile.org/en/2.6/getting-started.html#

https://hexo.io/

https://gohugo.io/


相关文章
|
6天前
|
机器学习/深度学习 数据采集 运维
高效处理异常值的算法:One-class SVM模型的自动化方案
高效处理异常值的算法:One-class SVM模型的自动化方案
47 1
|
6天前
|
运维 监控 测试技术
ansible 自动化运维监控方案
本文介绍如何利用ansible实时或自动采集受控主机的信息
|
6天前
|
数据采集 Web App开发 前端开发
前端自动化UI测试的完整方案
前端自动化UI测试的完整方案
177 0
|
10月前
|
算法 测试技术 Shell
基于Fastbot的移动端自动化测试方案
使用火山引擎来实现移动端的Monkey测试
742 0
基于Fastbot的移动端自动化测试方案
|
11月前
|
运维 监控 前端开发
终端出厂后自动化运维方案
终端出厂后自动化运维方案
|
测试技术 Python
【零基础】性能、自动化测试技能自学提升方案
成为性能和自动化行业领域专家,做有魅力,有影响力的人。
97 0
【零基础】性能、自动化测试技能自学提升方案
|
存储 IDE Java
【NetBeans】在Maven项目开发过程中对于NetBeans的合理运用以及自动化部署的方案详解
【NetBeans】在Maven项目开发过程中对于NetBeans的合理运用以及自动化部署的方案详解
187 0
|
Java jenkins 测试技术
自动化测试方案
自动化测试方案
525 0
自动化测试方案
|
消息中间件 存储 设计模式
Android卡顿优化 | 自动化卡顿检测方案与优化(AndroidPerformanceMonitor / BlockCanary)
Android卡顿优化 | 自动化卡顿检测方案与优化(AndroidPerformanceMonitor / BlockCanary)
|
人工智能 IDE 机器人
数字机器人及超级自动化产品和方案提供商朗思科技加入龙蜥社区
欢迎朗思科技加入龙蜥社区。未来,为社区贡献技术力量,并携手社区伙伴共同促进社区建设以及行业生态持续发展。
数字机器人及超级自动化产品和方案提供商朗思科技加入龙蜥社区

热门文章

最新文章