Fabric介绍,运维系列的远程部署神器

这几年,由于一直负责公司所有产品、项目等的数据采集,所以涉及到的服务器有几十台吧。Bug,都需要重复的执行:登录服务器-->切换到指定目录-->拉取代码-->修改配置-->重启服务,等等诸如此类的工作。是一个远程部署神器,它可以在本地执行远程服务器的命令。创建一个远程连接2.,管理上百台服务器都不成问题。如果是要在多台服务器运行命令,简单的办法就是使用迭代,挨个服务器执行命令:...

近年来,由于我一直负责公司所有产品和项目的数据收集,涉及的服务器有几十台。同时,由于不同项目的需求不同,定制开发的合集脚本有上百种。每次发布新功能,或者修改一个小bug,都需要反复执行:登录服务器-->切换到指定目录-->拉取代码-->修改配置-->重启服务PS时尚花纹笔刷下载,以此类推。

其实这种操作很繁琐,没有技术含量mac电脑远程连接运维软件,容易出问题,所以就出来了。它是一个远程部署神器,可以在本地执行来自远程服务器的命令。

怎么做?这很简单,只需几个步骤。

安装

$ pip install fabric --upgrade

请注意,如果您安装旧版本,则新版本与旧版本不兼容。目前一共有三个版本ImageCut(图片剪裁工具),前一个,只支持,弃用,但是现在的一个,支持,也是官方极力推荐的还有一个版本,是网友从老版本克隆出来的非官方版本,但是是兼容的mac电脑远程连接运维软件,也支持and。

最新的不需要.py文件或者fab命令,现在网上几乎所有的教程和资料都还是以写为主。当你在看那些教程的时候,注意筛选。新版本提供的API非常简单。

运行命令

我们来看一个例子,下面是一个部署脚本

.py1.创建远程连接2.进入指定目录3.在指定目录下执行重启命令

from fabric import Connection
def main():
	# ip 我是随便填的
	# 如果你的电脑配了ssh免密码登录,就不需要 connect_kwargs 来指定密码了。
	c = Connection("root@232.231.231.22", connect_kwargs={"password": "youpassword"})
	with c.cd('/var/www/youproject'):
    c.run("git pull origin master")
    c.run("/usr/bin/supervisorctl -c ../supervisor/supervisord.conf restart youproject")
if __name__ == '__main__':
	main()

实施

python deploy.py

执行完成后,最新的代码已经部署到官方环境,服务已经重启。是不是很方便?妈呀,不用再担心我在官方环境打错命令删除数据库跑路了。

海康威视远程电脑连接_mac电脑远程连接运维软件_电脑远程摄像头软件

不仅支持Linux,而且在平台上运行良好。在中小型项目中颓废风格斜线笔刷下载,是非常好的运维工具。有了它,管理数百台服务器都不是问题。

建立连接

class Connection(Context):
	host = None
	user = None
	port = None
	ssh_config = None
	connect_timeout = None
	connect_kwargs = None
	...

构造对象的方式有很多种,例如可以将host写成“root@192.168.101.1:22”,或者分别写成3个参数。相反,它是一个字典对象,通常填充服务器的登录密码或密钥。

海康威视远程电脑连接_mac电脑远程连接运维软件_电脑远程摄像头软件

上传文件

run方法用于执行命令,cd进入指定目录,put方法用于上传文件,例如:

from fabric import Connection
c = Connection('web1')
c.put('myfiles.tgz', '/opt/mydata')
c.run('tar -C /opt/mydata -xzvf /opt/mydata/myfiles.tgz')

多台服务器

如果要在多台服务器上运行命令,简单的方法是使用迭代,并在一台服务器上执行命令:

web1,web2,mac1都是服务器名,也可以用ip代替

或使用

from fabric import SerialGroup as Group
pool = Group('web1', 'web2', 'web3', connect_kwargs={"password": "youpassword"} )
pool.put('myfiles.tgz', '/opt/mydata')
pool.run('tar -C /opt/mydata -xzvf /opt/mydata/myfiles.tgz')

Group(*hosts, **) 参数说明:

•*hosts: 可以传入多个主机名或IP
•**kwargs 接收的参数可以和Connection一样,可以指定密码

相关文章

发表评论