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 ...
随机推荐
- ElasticSearch入门-基本概念介绍以及安装
Elasticsearch基本概念 Elasticsearch是基于Lucene的全文检索库,本质也是存储数据,很多概念与传统关系型数据库类似. 传统关系型数据库与Elasticsearch进行概念对 ...
- 开始使用 git(配置+常用命令)
▶ 注意 页面显示问题: -- 是两个短横线 - 是一个横短线 由于显示问题导致两个短横线之间没有空格,看起来像是一条横线,实则是两条短横线 ▶ git 常用命令 ◆ git add ● git ad ...
- SAS学习笔记19 SAS删除空格函数(left、right、trim、strip、compress、compbl函数)
- Python中操作mysql的pymysql模块详解(转载)
https://www.cnblogs.com/wt11/p/6141225.html
- hdu 4496 其实还是并查集
Problem Description Luxer is a really bad guy. He destroys everything he met. One day Luxer went to ...
- gin框架封装自己的路由 ②
在一个项目中,我们会有很多路由,那么我们该如何更好的管理自己的路由,在多人协同的情况下可以更好的规范路由呢,我来说一下自己的做法 1.承接gin框架初识(先跑一个简单demo) ①,先创建一个cont ...
- MSPBSL_Scripter编译
The BSL Scripter is a PC application that is available for Windows, Linux and Mac OS X. It is a user ...
- c#排序sql语句查询
排序存储的效果图: 根据id排序的sql存储过程: DECLARE @type varchar() ' ' Order By charindex(','+ convert(varchar,id) +' ...
- centos 6升级 GCC 到4.8
centos 6升级 GCC 到4.8 安装最新版本的swoole 提示 pecl install swolle ... GCC 4.8 or later required. 首先想到的时候yum ...
- mongodb备份每一天的数据
需求:把mongodb里面存储6个月的数据备份到本地,一天天的来备份,方便对备份管理.然后mongo保留一周的数据(优化查询速度,可以用mongo的ttl来实现,但是我的业务场景不太适合用ttl索引) ...