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 ...
随机推荐
- Tcp问题汇总
一 TCP三次握手 PS:TCP协议中,主动发起请求的一端称为『客户端』,被动连接的一端称为『服务端』.不管是客户端还是服务端,TCP连接建立完后都能发送和接收数据. 起初,服务器和客户端都为CLOS ...
- TypeScript 高级类型
⒈交叉类型(Intersection Types) 交叉类型是将多个类型合并为一个类型. 这让我们可以把现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性. 例如, Person &a ...
- 【Docker】:使用docker安装mysql,挂载外部配置和数据
普通安装 1.下载镜像,mysql 5.7 docker pull mysql:5.7 2.创建mysql容器,并后台启动 docker run -d -p 3306:3306 -e MYSQL_US ...
- 使用Laravel 和 Vue 构建一个简单的SPA
本教程是作者自己在学习Laravel和Vue时的一些总结,有问题欢迎指正. Laravel是PHP的一个框架,Vue是前端页面的框架,这两个框架如何结合起来构建一个SPA(Single Page Ap ...
- 20191011-构建我们公司自己的自动化接口测试框架-ProVar模块
ProVar模块主要定义测试数据所在目录,以及定义变量和测试数据excel里面的column对应这样后续在进行excel操作的时候直接使用变量即可进行操作,后期excel的column有增删的时候,修 ...
- (十六)Activitivi5之内置用户组(角色)设计表以及IdentityService
一.内置用户组(角色)设计表概念 用户和组(或者叫做角色),多对多关联,通过关联表实现 act_id_user 用户表: act_id_group 用户组表: act_id_membership 用户 ...
- 记录我第一篇用Markdown写的Blog
Markdown的介绍 喝水不忘挖井人-Markdown的创造者 Markdown 最初是由 John Gruber 和 Aaron Swartz 于 2004 年共同设计的(在这里插一句,Aaron ...
- java 框架-企业级搜索 Solr
https://blog.csdn.net/cs_hnu_scw/article/details/79388080 一:Solr简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类 ...
- opengl 笔记
1. 本函数可以禁用多边形正面或背面上的光照.阴影和颜色计算及操作,消除不必要的渲染计算是因为无论对象如何进行旋转或变换,都不会看到多边形的背面.用GL_CULL_FACE参数调用glEnable和g ...
- vue-cli || webpack 打包的时候css里面写的背景图片的路径出错问题
.bg width 100% position fixed left 0 top 0 height 100vh z-index -1 background url('~@/assets/imgs/bg ...