近年来,由于我一直负责公司所有产品和项目的数据收集,涉及的服务器有几十台。同时,由于不同项目的需求不同,定制开发的合集脚本有上百种。每次发布新功能,或者修改一个小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
执行完成后,最新的代码已经部署到官方环境,服务已经重启。是不是很方便?妈呀,不用再担心我在官方环境打错命令删除数据库跑路了。
不仅支持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个参数。相反,它是一个字典对象,通常填充服务器的登录密码或密钥。
上传文件
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一样,可以指定密码
发表评论