Fabric部署及Kerberos支持

深受DevOps模式毒害,天天都少不了干op的活。之前部署一直用bash脚本,后台并发执行各种远程命令,但bash脚本不好做并发控制,写稍复杂些的脚本都很费劲。当用过好几层eval命令后,我终于放弃了。

几经波折,Fabric成了我的新欢。在看到fabric对服务器角色、本地和远程各种命令的支持后,相信我,我是留着口水的。

安装:

安装很简单,直接pip之:

sudo pip install fabric

执行本地测试so easy。fabric默认从cwd的fabfile.py中加载命令:

# fabfile.py
def hello():
  print('Hello World!')

执行命令:

~/deploy\_tools$ fab hello
Hello World!

远程执行也并不复杂,网上各种教程很多,这里不再赘述。

Kerberos支持

重点说我遇到的问题:内网使用了Kerberos认证,使用远程命令时,一直提示输入密码。网上查了下,fabric现在并不支持Kerberos认证,但fabric的ssh是基于paramiko的,后者已经提供了Kerberos支持。github上fabric有个patch也已经支持:url。所以重新clone最新的fabric代码,然后patch之,之后手动重新安装fabric:

curl https://patch-diff.githubusercontent.com/raw/fabric/fabric/pull/1261.patch > /tmp/1261.patch
git clone https://github.com/fabric/fabric.git
cd fabric && git apply /tmp/1261.patch
python setup.py install

再次执行依然报错。但错误变成了:

ERROR:paramiko.transport:ImportError: Unable to import a GSS-API / SSPI module!

有戏!再查paramiko的install说明,发现还需要安装python-gssapi,pyasnl。安装完毕后,一切搞定!

Fabric的debug日志

在查找无法执行远程命令的原因时,找到了fabric的trouble-shooting页面。里面提及打印DEBUG日志的方式,对追查问题帮助很大:

import logging
logging.basicConfig(level=logging.DEBUG)

之后想写一下对Kerberos的了解,简单备忘下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 背景: 阅读新闻 12C CDB模式下RMAN备份与恢复 [日期:2016-11-29] 来源:Linux社区 作...
    阳屯okyepd阅读 3,605评论 0 7
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,954评论 6 342
  • 1、这世界没有圣人,没有榜样,所以不需要自卑。其实大家都是弱者,知识学习能力不一样,或者弱的方面不一样。就像许三多...
    程健习阅读 225评论 0 0
  • 人情,是指人与人之间交往产生的感情,但在经过漫长岁月后,多数人曲解它原有的意思,成为一种习惯形式。领导与下属,邻居...
    自由家Z阅读 124评论 0 0