参考《Python自动化运维 技术与最佳实践》
 

1:查看本地与远程主机信息

  1. #!/usr/bin/python
  2. from fabric.api import *
  3.  
  4. env.user="lile"
  5. env.hosts=['10.0.0.145','10.0.0.147']
  6. env.password=""
  7.  
  8. #@runs_once
  9. def local_task():
  10. local('uname -r')
  11. def remote_task():
  12. with cd("/tmp"):
  13. run("ls")
with 的作用是让后面的表达式的语句继承当前状态,实现“cd /tmp && ls”的效果
上面的remote_task也可表示为:
  1. def remote_task():
  2. run("cd /tmp" && ls)
 
2:动态的获取远程目录列表
  1. #!/usr/bin/python
  2. from fabric.api import *
  3.  
  4. env.user="lile"
  5. env.hosts=['10.0.0.145','10.0.0.147']
  6. env.password=''
  7.  
  8. @runs_once
  9. def input_raw():
  10. return prompt("please input directory name:",default="/home")
  11.  
  12. def worktask(dirname):
  13. run("ls " + dirname)
  14.  
  15. @task
  16. def go():
  17. getdirname = input_raw()
  18. worktask(getdirname)
 
prompt 表示获取用户的信息
@task 函数修饰符,表示只有函数标记了,才为fab可调用,非标记的不可用
 
 若注释掉@task,三个都可见

 
执行结果为:

 这里的@runs_once表示只要输入一个,然后所有的主机都是查看这个路径下的东西,画红圈圈的[10.0.0.145]可以不用管。
 
3:上传tomcat,并解压,通过堡垒机的形式
  1. #!/usr/bin/python
  2. from fabric.api import *
  3. from fabric.context_managers import *
  4. from fabric.contrib.console import confirm
  5.  
  6. env.user="root"
  7. env.gateway="10.0.0.12"
  8. env.hosts=['10.0.0.145','10.0.0.147']
  9. env.passwords={
  10. 'root@10.0.0.12:22':'root123456',
  11. 'root@10.0.0.145:22':'',
  12. 'root@10.0.0.147:22':''
  13. }
  14.  
  15. lpath="/fabric/5/apache-tomcat-8.5.12.tar.gz"
  16. rpath="/tmp/install"
  17.  
  18. @task
  19. def put_task():
  20. run('mkdir -p /tmp/install')
  21. with settings(warn_only=True):
  22. result = put(lpath,rpath)
  23. if result.failed and not confirm("put file failed,Continue[Y/N]?"):
  24. abort("Aborting file put task!")
  25.  
  26. @task
  27. def tar():
  28. with cd("/tmp/install"):
  29. run("tar -zxvf apache-tomcat-8.5.12.tar.gz")
  30.  
  31. @task
  32. def go():
  33. put_task()
  34. tar()
 
这里是通过堡垒机的形式上传本地文件,文件不是放在堡垒机上,而是放在执行此脚本的本地机器上
env.gateway:定义网关IP(也就是中转,堡垒机IP)
env.passwords:设置密码,但是需要设置账户,主机,端口等信息
 

Fabric实例的更多相关文章

  1. Fabric 1.0的多机部署

    Fabric1.0已经正式发布一段时间了,官方给出的单机部署的脚本也很完备,基本上傻瓜式的一键部署,直接运行官方的network_setup.sh up即可.但是在实际生产环境,我们不可能把所有的节点 ...

  2. 在Ubuntu中部署并测试Fabric 1.0 Beta

    [更新:1.0Beta已经是过去式了,现在出了1.0.0的正式版,请大家参照 http://www.cnblogs.com/studyzy/p/7437157.html  安装Fabric 1.0.0 ...

  3. 006/搭建fabric(二)

    准备vmware虚拟机,并安装完ubuntu系统后.继续搭建fabric运行环境... 0.打开终端,切换root身份.目的:后续操作即可不用sudo... 右键->open Terminal- ...

  4. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  5. Service Fabric下删除实例并注销应用

    Service Fabric下删除实例并注销应用: 以应用名称:Application1为例 1.打开PowerShell 2.连接集群: Connect-ServiceFabricCluster - ...

  6. fabric使用实例(发布web包的一个例子)

    #!/usr/bin/env python # -*- coding: utf-8 -* #添加中文注释的编码 #fabfile.py from fabric.api import * env.use ...

  7. MySQL: Fabric 搭建 HA

    搭建好Fabric之后,就可以在它的基础上创建HA Group. Shard Group.HA+Shard Group等.这里来说明一下如何快速的搭建HA环境. Fabric 192.168.2.23 ...

  8. MySQL:Fabric 安装

    MySQL Fabric安装 MySQL Fabric是Oracle提供的用于辅助进行ha\sharding的工具,它的基本架构: 从上面看出,借助于Fabric, 可以搭建 HA 集群.Sharin ...

  9. Fabric远程自动化使用说明

    背景: 关于Fabric的介绍,可以看官网说明.简单来说主要功能就是一个基于Python的服务器批量管理库/工具,Fabric 使用 ssh(通过 paramiko 库)在多个服务器上批量执行任务.上 ...

随机推荐

  1. 学习笔记69—金蝶财务软件安装教程(KIS12.3,win10)

    ****************************************************** 如有谬误,请联系指正.转载请注明出处. 联系方式: e-mail: heyi9069@gm ...

  2. 相似性 similarity | Pearson | Spearman | p-value | 相关性 correlation | 距离 distance | distance measure

    这几个概念不能混淆,估计大部分人都没有完全搞懂这几个概念. 看下这个,非常有用:Interpret the key results for Correlation euclidean | maximu ...

  3. Orchard是如何呈现内容的

    首先Orchard是一个建立在ASP.NET MVC框架上的CMS应用框架.Orchard在呈现内容的时候也遵循MVC的规律,也是通过Controller来处理Url请求并决定用那个View来呈现那种 ...

  4. Sign Up Account In CloudAMQP

    CloudAMQP 有多种账号级别,请参考下面的链接的内容访问你可以注册的级别:https://www.cloudamqp.com/plans.html 作为测试来说,你可以注册免费的的消息. 你可以 ...

  5. JAVA中解决Filter过滤掉css,js,图片文件等问题

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOE ...

  6. vue+canvas踩坑之旅

    let img=new Image(); if(img.complete) { console.log('dd'); } img.src="http://localhost:8888/sta ...

  7. day_7

    r 读w 写a 追加写 f = open('s.txt',mode='r',encoding='utf-8') ff = f.readline() #读取时一行一行的时候末尾会跟着\nprint(ff ...

  8. python与sqlserver接口包pymssql

    包下载地址(对应着自己的电脑和Python的版本下载即可,我电脑是win32,Python是3.6的) https://pypi.python.org/pypi/pymssql/ 下载后我放到了d盘中 ...

  9. 项目中Java Resources有红叉,其它没有,解决办法

    说起这个这个地方,我课改了好久 起初,我把原先项目的JDK版本改了,右击项目Build Path,然后换掉里面的JRE,没用, 然后右击项目,点击properties,找到在Project Facet ...

  10. angularJs绑定select的正确姿势

    最近在项目中使用ionic,需要在页面上绑定一个年份下拉框,默认选中当前年,并且在下拉框的change事件中增加一些业务逻辑. 不管是使用ng-repeat还是ng-options,都是各种坑:默认选 ...