febric的使用
from fabric.api import *
from fabric.colors import *
from fabric.tasks import execute
'''
env.hosts = ['192.468.4.50','192.168.4.51']
env.user = 'root'
env.port = 22
env.password = '123456'
env.passwords = {
'root@192.168.4.50:22':'123456',
'root@192.168.4.51:22':'123456',
}
''' env.hosts = [
'root@192.168.4.50:22',
'root@192.168.4.51:22',
'root@192.168.4.52:22',
'root@192.168.4.53:22',
'root@192.168.4.54:22',
'root@192.168.4.55:22',
'root@192.168.4.56:22',
'root@192.168.4.57:22',
'root@192.168.4.58:22',
]
env.password = '' @runs_once
def xxx():
cmd = prompt('请输入要执行的命令:')
run(cmd) # 本地执行命令
@runs_once
def local_cmd(cmd, dir=None):
if dir == None:
dir ='/root'
with settings(hide('everything'), warn_only=True):
with lcd(dir): # 本地切换目录
result = local(cmd) # 本地执行命令
print(green(result)) # 远程执行命令
def remote_cmd(cmd, dir=None):
if dir == None:
dir = '/root'
with settings(hide('everything'), warn_only=True):
with cd(dir): # 远程切换目录
result= run(cmd) # 远程执行命令
print(green(result)) # 查看端口信息
def port_info(port):
cmd = "ss -autnlp | grep {}".format(port)
with settings(hide('everything'), warn_only=True):
result = run(cmd)
print(green(result)) # 安装软件
def install_soft(soft):
cmd = "yum -y install %s"%soft
with settings(hide('everything'), warn_only=True):
run(cmd)
cmd = "rpm -qa | grep %s"%soft
if cmd:
print(green('安装成功')) # 重启服务
def restart(service):
cmd = "systemctl restart {}".format(service)
with settings(hide('everything'), warn_only=True):
result = run(cmd)
print(green(result)) # 停止服务
def stop(service):
cmd = "systemctl stop {}".format(service)
with settings(hide('everything'), warn_only=True):
result = run(cmd)
print(green(result)) # 查看服务状态
def status(service):
cmd = "systemctl status {}".format(service)
with settings(hide('everything'), warn_only=True):
result = run(cmd)
print(green(result))
http://127.0.0.1:8000/
# 上传文件/压缩文件解压
def upload(src, tar=None):
if tar == None:
tar = src
with settings(hide('everything'), warn_only=True):
put(src, tar)
print(green('upload successful'))
print(tar[-3:])
if tar[-3:] == ".gz":
cmd = "tar -xf %s" % tar
run(cmd) # 下载文件
def download(src, tar=None):
if tar == None:
tar = src
with settings(hide('everything'), warn_only=True):
get(src, tar)
print(green('download successful')) #if __name__ == '__main__':
# execute(xxx)
# fab -f fabfile.py update
# fab -f fabfile.py port_status:80
from fabric.api import * env.user = 'root'
env.hosts = [
'192.168.4.50',
'192.168.4.51',
]
env.password = '' @runs_once # 只执行一次
@task
def local_update(dir):
with lcd(dir): # 切换到本地某目录下
local("git add -A")
local("git commit -m update")
local("git pull origin master")
local("git push origin master") @task
def remote_update(dir):
with cd(dir): # 切换到远程某目录
run("git checkout")
run("git pull origin master") @task
def deploy():
local_update()
remote_update()
from fabric.api import *
from fabric.context_managers import *
from fabric.contrib.console import confirm env.user = 'root'
env.gateway = '192.168.1.23' #定义堡垒机IP,作为文件上传、执行的中转设置
env.hosts = ['192.168.1.21','192.168.1.22']
env.passwords = {
'root@192.168.1.21:22':'',
'root@192.168.1.22:22':'abcdef',
'root@192.168.1.23:22':'123abc', #堡垒机账号信息
} lpackpath = '/home/install/lnmp.tar.gz' #本地安装包路径
rpackpath = '/tmp/install' #远程安装包路径 @task
def put_task(): #上传文件
run('mkdir -p /tmp/install')
#默认情况下,当命令执行失败时,Fabric会停止执行后续命令。有时,我们允许忽略失败的命令继续执行,比如run(‘rm /tmp/abc')在文件不存在的时候有可能失败,这时可以用with settings(warn_only=True):执行命令,这样Fabric只会打出警告信息而不会中断执行。
with settings(warn_only=True):
result = put(lpackpath,rpackpath) #上传
if result.failed and not confirm('put file failed,Continue[Y/N]?'):
abort('Aborting file put task!') @task
def run_task(): #安装
with cd('/tmp/install'):
run('tar -zxvf lnmp.tar.gz')
with cd('lnmp/'): #使用with继承/tmp/install目录位置状态
run('./centos.sh') @task
def go(): #上传、安装组合命令
put_task()
run_task()
febric的使用的更多相关文章
- Azure Service Febric 笔记:Web API应用
1.什么是Service Febric 贴一段微软官方的介绍 Service Fabric 是一种分布式系统平台,可让你轻松打包.部署和管理可缩放.可靠的微服务.Service Fabric 还解决了 ...
- 常用数据库高可用和分区解决方案(1) — MySQL篇
在本文中我们将会讨论MySQL.Oracle.MongoDB.Redis以及Oceanbase数据库,大家可能会奇怪为什么看不到有名关系型数据库MSSQL.DB2或者有名NoSQL数据库Hbase.L ...
- 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- 003-主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- 大厂0距离:网易 Linux 运维工程师面试真题,内含答案
作为 Linux 运维工程师,进入大公司是开启职业新起点的关键,今天马哥 linux 运维及云计算智囊团的小伙伴特别分享了其在网易面试 Linux 运维及云计算工程师的题目和经历,希望对广大 Linu ...
随机推荐
- Go语言学习笔记(6)——指针
指 针 指针: 存储另一个变量的内存地址的变量: Go语言的取地址符号也是& 1. 声明指针: var needle_name *type var b int = 10 var a *int ...
- Oracle数据库导出txt格式工具sqlload2使用
开发需求:需要在数据库中查询数据,最终得到cxv表格形式数据. 使用plsql导出70M数据量非常慢,本次使用sqlload2工具,导出文本txt文本格式. 1)导出txt文本文件$ ./sqluld ...
- (三)CXF之处理输入参数与输出类型为复杂类型的webService服务
一.需求 调用webService服务,把用户名和密码封装为用户对象作为参数,返回该用户所用友的角色列表. 二.发布服务 2.1 编写服务接口 @WebService public interface ...
- 关于hashcode 和 equals 的内容总结
第一:equals() 的作用是 表示其他对象是否“等于”这个对象. 在Object源码里面 equals的作用等价于 == 即 用来比较俩个对象的内存地址是否相同 public boole ...
- XML-RPC-3XML-RPC 与 XML-RPC 服务器类
http://codeigniter.org.cn/user_guide/libraries/xmlrpc.html XML-RPC 与 XML-RPC 服务器类 CodeIgniter 的 XML- ...
- SVN 问题解决之 Working copy path does not exist in repository
同事的SVN更新时提示某个特定文件提示 Working copy path does not exist in repository svn更新会被这个错误打断,导致无法完全更新 删掉文件再更新仍然有 ...
- MySQL5.6.11安装步骤(Windows7 64位)
1. 下载MySQL Community Server 5.6.21,注意选择系统类型(32位/64位) 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下. 3. 添加环境变量 ...
- [书籍翻译] 《JavaScript并发编程》 第二章 JavaScript运行模型
本文是我翻译<JavaScript Concurrency>书籍的第二章 JavaScript运行模型,该书主要以Promises.Generator.Web workers等技术来讲解J ...
- 字符串slice、substring、substr
1.slice() 可以为负数,如果起始位置为负数,则从字符串最后一位向前找对应位数并且向后取结束位置,如果为正整数则从前往后取起始位置到结束位置. 2.substring() 只能非负整数,截取起始 ...
- win8怎么强制删除文件
转自:https://www.jizhuba.com/zhichanglicai/20180119/5705.html 方法/步骤1.例如我们想删除桌面上的“123”文件夹,发现无法删除.2.可以这样 ...