使用Faric+Git进行分布式代码管理
from fabric.api import *
from fabric.colors import * #服务器主机列表
#env.hosts=['username1@host1:port','username2@host2:port']
#如果多个服务器密码相同直接使用
#env.password='password'
#可以使用ssh密钥来代替密码访问远程主机(更安全),前提是需要将公钥保存在远程主机的authorized_keys文件中
#env.key_filename=‘~/.ssh/id_rsa' #若服务器之间密码不同,使用passwords变量存储键值对
#env.passwords = {'username1@host1:port':'password1','username2@host2:port':'password2'} #使用roledefs进行服务器角色分组
#env.roledefs = {
# 'role1': ['username1@host1:port'],['username2@host2:port']
# 'role2': ['['username3@host3:port']']
#} #称为任务函数,可在命令行使用fab local_update:msg=msg 直接调用
def local_update(msg):
#打印红色字体
print red('local host:ali_ibignose')
#打印绿色字体
print green('local git pushing...')
#lcd为本地的cd操作
with lcd('/home/omniREST/'):
#如果当前没有新的更改直接使用commit会终止任务进行,所以将此中断设置仅为输出警告信息
with settings(warn_only=True):
#local为在本地执行命令
local('git add *')
local('git commit -m "%s"' % msg)
local('git push -u origin master')
print green('local git push complete!') #parallel注解的作用是可以使函数并行执行,可用在多个服务器同时进行同一个任务函数
#@parallel
def local_docker_restart():
print red('local host:ali_ibignose')
print green('local docker restarting...')
local('docker restart omniREST ./root/run.sh')
print green('local docker restart complete!') #设置角色使用roles注解,那么该任务函数将会在所有角色为role1的机器上执行
#@roles('role1')
def remote1_update():
#也可直接在任务函数中指明连接主机的信息
env.user='username'
env.host_string='username@host:port'
env.password='password'
print red('remote host:nc_test')
print green('remote git pulling...')
#cd为远程cd操作
with cd('/home/omniREST/tomcat/webapps/ROOT'):
#run为远程执行命令操作
run('git pull origin master')
print green('remote git pull complete!')
print ''
print green('remote tomcat restarting...')
with cd('/home/omniREST/tomcat/bin'):
run('./shutdown.sh')
run('nohup ./startup.sh')
print green('remote tomcat restart complete!') def remote2_update():
print red('remote host:ibignose')
print green('remote git pulling...')
with cd('/data2/usr/ibignose/tomcat/webapps/ROOT'):
run('git pull origin master')
print green('remote git pull complete!')
print ''
print green('remote tomcat restarting...')
with cd('/data2/usr/ibignose/tomcat/bin'):
run('./shutdown.sh')
run('nohup ./startup.sh')
print green('remote tomcat restart complete!') #可以在命令行直接使用fab update:msg=msg 来调用所有任务函数
#执行流程为从上到下,一旦遇到终止性的错误将不会继续执行
def update(msg):
local_update(msg)
print ''
local_docker_restart
print ''
remote1_update()
print ''
remote2_update()
#遍历字典方式操作多服务器
dict_host={'ibignose':'root@42.62.50.218:22','nc_test':'root@54.223.196.153:22'}
dict_user={'ibignose':'root','nc_test':'root'}
dict_pwd={'ibignose':'richardg@b83a6fa8','nc_test':'T6yuj&hg'}
dict_path={'ibignose':'/data2/usr/ibignose/tomcat','nc_test':'/home/omniREST/tomcat'} def remote_update():
for hostname,host in dict_host.iteritems():
env.user='%s' % dict_user[hostname]
env.host_string='%s' % host
env.password='%s' % dict_pwd[hostname]
print red('remote hostname:%s' % hostname)
print green('remote git pulling...')
with cd('%s/webapps/ROOT' % dict_path[hostname]):
run('git pull origin master')
print green('remote git pull complete!')
print ''
print green('remote tomcat restarting...')
with cd('%s/bin' % dict_path[hostname]):
run('./shutdown.sh')
run('nohup ./startup.sh')
print green('remote tomcat restart complete!')
使用Faric+Git进行分布式代码管理的更多相关文章
- 分布式代码管理 tortoisehg mercurial
下载客户端: https://bitbucket.org/tortoisehg/files/downloads mercurial客户端下载:http://mercurial.s ...
- [Git] 谷歌的代码管理
copy from : http://www.ruanyifeng.com/blog/2016/07/google-monolithic-source-repository.html https:// ...
- Go语言在线培训哪里好?Git操作和代码管理
在实际的项目开发过程中,多人进行项目开发,需要涉及到代码管理和协同管理.这就需要使用到代码协同管理工具.在过去,大家都熟悉使用的是SVN软件,而现在Git代码仓库管理软件的使用更为广泛.在本系列实战项 ...
- 关于分布式代码管理工具git
一.安装 Step1 进入官网https://www.git-scm.com/download/下载,然后安装,一直“下一步”即可 Step2 验证是否安装成功,在任意地方右键,菜单中含有Git ...
- git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...
- GIt如何进行代码管理
一:Git账号设置(仅第一次需设置): 1.首先打开GIt Bash 界面
- 分布式代码管理github
Git是世界上最先进的分布式版本的控制系统,特点是:简单大气上档次. Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了.
- git subtree模块化代码管理
Git Subtree 的原理 首先,你有两个伟大的项目——我们叫他P1项目.P2项目,还有一个牛逼的要被多个项目共用的项目——我们叫他S项目.我们通过简要讲解使用Subtree来同步代码的过程来解释 ...
- 使用Git Bash进行代码管理
前提是已经安装了GitBash,这个稍后再出教程 1.新建一个目录,存放下载下来的项目,我在D盘新建了一个“gitspace”文件夹,用来存放下载下来的项目 2.进入刚刚新建的文件夹,即进入“gits ...
随机推荐
- Cannot open include file: 'libxml/xpath.h': No such file or directory
在搭建scrapy爬虫框架时,通过pip安装lxml遇到了这个问题,我是用32位的windows搭建爬虫框架,python版本是2.7.12, 解决方案如下: 原因: 在网上各种找原因,有大神是说没安 ...
- 运行微信支付demo
首先要说说写这篇文章的初衷:集成支付宝支付运行demo都是可以正常运行的,但是我下载下来微信支付的demo,却发现一大堆报错,而且相关文章几乎没有,可能大家觉得没必要,也许你觉得很简单:但是技术大牛都 ...
- PHP魔术方法使用
PHP魔术方法的使用 PHP魔术方法的使用 1.__get() 和 __set(); 2.__call() 和 __callStatic(); 3.__toString(); 4.__ ...
- AC日记——LOOPS hdu 3853
3853 思路: 概率dp求期望: 代码: #include <cstdio> #include <cstring> #include <iostream> usi ...
- radio和label关联问题,点击label改变颜色
$(function () { $("#fangan :radio[name='price']").bind('click', function (event) { //$(thi ...
- 求第N个回文数 模板
备忘. /*看到n可以取到2*10^9.说明普通方法一个个暴力计算肯定会超时的,那打表呢?打表我们要先写个打表的代码,这里不提供.打完表观察数据,我们会发现数据其实是有规律的.完全不需要暴力的把所有数 ...
- web api 返回数据
一.Webapi的接口返回值类型 主要有四种类型 :void,HttpResponseMessage,IHttpActionResult,其他 1. void [HttpGet] public voi ...
- 关于 hibernate 中 hashCode爆栈的探讨
今天在 hibernate 的一对多映射测试 merge 方法时,出现了以下的异常: 我们可以看到,这里的错误有非常明显的重复性,很显然是做了间接递归,并且递归的调用是 hashMap 中的hashC ...
- 学习LSM(Linux security module)之四:一个基于LSM的简单沙箱的设计与实现
嗯!如题,一个简单的基于LSM的沙箱设计.环境是Linux v4.4.28.一个比较新的版本,所以在实现过程中很难找到资料,而且还有各种坑逼,所以大部分的时间都是在看源码,虽然写的很烂,但是感觉收获还 ...
- JavaScript中的map方法
假设有一个函数f(x)=x²;作用在一个数组[1,2,3,4,5,6,7,8,9],通常我们会用遍历的方法来实现. function f(x){ return x * x; } var arr = [ ...