python部署工具fabric

两台机器:10.1.6.186、10.1.6.159。fabric部署在10.1.6.186上面

1  执行和1相同的任务,不过排除掉10.1.6.159这台机器

 1 #!/usr/bin/python
 2 from fabric.api import *
 3 from fabric.context_managers import *
 4
 5 env.hosts=[‘10.1.6.186‘,‘10.1.6.159‘]
 6 env.password=‘xxxxxx‘
 7 env.exclude_hosts=[‘10.1.6.159‘]
 8
 9 def task1():
10     with cd(‘/home/guol‘):
11         run(‘ls -l‘)

fab task1

2 执行和2相同任务,再增加一个task2,并且把taskN伪装成meta任务执行

#!/usr/bin/python
from fabric.api import *
from fabric.colors import *
from fabric.context_managers import *

env.hosts=[‘10.1.6.186‘,‘10.1.6.159‘]
env.password=‘xxxxxx‘
env.exclude_hosts=[‘10.1.6.159‘]

def task1():
    with cd(‘/home/guol‘):
        run(‘ls -l‘)

def task2():
    print(green("I‘m fabric"))

def deploy():
    execute(task1)
    execute(task2)

##执行
[email protected]:/tmp# fab deploy

3 不同的机器执行不同的task

#!/usr/bin/python
from fabric.api import *
from fabric.colors import *
from fabric.context_managers import *

env.roledefs={‘web1‘:[‘10.1.6.186‘],‘web2‘:[‘10.1.6.159‘]}
env.password=‘xxxxxx‘

@roles(‘web1‘)
def task1():
    with cd(‘/home/guol‘):
        run(‘ls -l‘)
@roles(‘web2‘)
def task2():
    print(green("I‘m fabric"))

def deploy():
    execute(task1)
    execute(task2)
##执行
[email protected]:/tmp# fab deploy

4 把159的/home/guol/159-remote拉取到186的 /home/guol/目录下

#!/usr/bin/python
from fabric.api import *
from fabric.colors import *
from fabric.context_managers import *
env.hosts=[‘10.1.6.159‘]
env.password=‘xxxxxx‘

def task1():
    print(green("I‘m 186 /home/guol/"))
    local(‘ls -l /home/guol‘)
def task2():
    print(green("I‘m get 159‘s 159-remote file to 186"))
    get(‘/home/guol/159-remote‘,‘/home/guol‘)
    print(yellow("I‘m 186 /home/guol/"))
    local(‘ls -l /home/guol‘)

def deploy():
    execute(task1)
    execute(task2)

##执行
[email protected]:/tmp# fab deploy
[10.1.6.159] Executing task ‘deploy‘
[10.1.6.159] Executing task ‘task1‘
I‘m 186 /home/guol/
[localhost] local: ls -l /home/guol
total 0
-rw-r--r-- 1 root root 0 Dec 21 13:32 186-local
[10.1.6.159] Executing task ‘task2‘
I‘m get 159‘s 159-remote file to 186
[10.1.6.159] download: /home/guol/159-remote <- /home/guol/159-remote
I‘m 186 /home/guol/
[localhost] local: ls -l /home/guol
total 0
-rw-r--r-- 1 root root 0 Dec 21 14:28 159-remote
-rw-r--r-- 1 root root 0 Dec 21 13:32 186-local

Done.
Disconnecting from 10.1.6.159... done.

5 把186的/home/guol/ 186-local推送到159的 /home/guol/目录下

#!/usr/bin/python
from fabric.api import *
from fabric.colors import *
from fabric.context_managers import *
env.hosts=[‘10.1.6.159‘]
env.password=‘xxxxxx‘

def task1():
    print(green("I‘m 159 /home/guol/"))
    with cd(‘/home/guol‘):
        run(‘ls -l‘)
def task2():
    print(green("I‘m put 186‘s 186-local file to 159"))
    put(‘/home/guol/186-local‘,‘/home/guol‘)
    print(yellow("I‘m 159 /home/guol/"))
    with cd(‘/home/guol‘):
        run(‘ls -l‘)
def deploy():
    execute(task1)
    execute(task2)

##执行
[email protected]:/tmp# fab deploy
[10.1.6.159] Executing task ‘deploy‘
[10.1.6.159] Executing task ‘task1‘
I‘m 159 /home/guol/
[10.1.6.159] run: ls -l
[10.1.6.159] out: total 0
[10.1.6.159] out: -rw-r--r-- 1 root root 0 Dec 21 13:32 159-remote
[10.1.6.159] out: 

[10.1.6.159] Executing task ‘task2‘
I‘m put 186‘s 186-local file to 159
[10.1.6.159] put: /home/guol/186-local -> /home/guol/186-local
I‘m 159 /home/guol/
[10.1.6.159] run: ls -l
[10.1.6.159] out: total 0
[10.1.6.159] out: -rw-r--r-- 1 root root 0 Dec 21 13:32 159-remote
[10.1.6.159] out: -rw-r--r-- 1 root root 0 Dec 21 14:33 186-local
[10.1.6.159] out: 

Done.
Disconnecting from 10.1.6.159... done.

7  在186上打开一个159的交互式的shell

#!/usr/bin/python
from fabric.api import *
from fabric.colors import *
from fabric.context_managers import *
env.hosts=[‘10.1.6.159‘]
env.password=‘xxxxxx‘

def task3():
    open_shell("ifconfig eth0|grep ‘10.1.6.159‘")
def deploy():
     execute(task3)

##执行
[email protected]:/tmp# fab deploy
[10.1.6.159] Executing task ‘deploy‘
[10.1.6.159] Executing task ‘task3‘
Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-17-generic x86_64)
Last login: Fri Dec 21 14:39:39 2012 from 10.1.6.186
ifconfig eth0|grep ‘10.1.6.159‘
[email protected]:~# ifconfig eth0|grep ‘10.1.6.159‘
          inet addr:10.1.6.159  Bcast:10.1.6.255  Mask:255.255.255.0
时间: 2024-10-10 16:30:36

python部署工具fabric的相关文章

python 自动化部署工具Fabric简介

自动化部署工具Fabric简介 Fabric就是一个帮助我们在上线时减少重复/繁琐操作的自动化部署利器,对于缺乏成熟运维平台的众多小公司的运维或开发人员来说,掌握这个工具是有必要的. 1. Fabric是什么 Fabric官方文档的描述如下:      Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or sy

fabric --- Python中的批量远程管理和部署工具

Fabric是Python中一个非常强大的批量远程管理和部署工具,常用于在多个远程PC上批量执行SSH任务. 常见的使用方法大概总结如下: 1, 首先,要将批量执行的任务写入到一个fabfile.py中, # -*- coding:utf-8 -*- from fabric.api import run, local, roles, env, cd env.hosts=[ '192.168.1.110', '192.168.1.111', '192.168.1.112' ] env.user="

Python自动化运维工具fabric的安装

使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自动登录其他服务器进行各种操作,这种实现使用shell是很难做到的,但是使用fabric实现就很简单,所以对于程序员的日常运维部署,建议使用python编写脚本 Linux下默认有python环境,安装fabric有两种方式一种是pip直接安装,另外一种是下载fabric源码,使用setuptools

Python 系统管理利器Fabric

一.简介 Fabric是基于Python 2.5及以上版本实现的SSH命令行工具,简化了SSH了应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行,文件上传,下载及完整执行日志输出等功能.Fabric在paramiko的基础上做了更高一层的封装,操作起来会更简单. Fabric官方文档:http://www.fabfile.org/ API文档:http://docs.fabfile.org/en/1.10/ 基础案例文档:http://doc

Openstack部署工具

Openstack发展很猛,很多朋友都很认同,2013年,会很好的解决OpenStack部署的问题,让安装,配置变得更加简单易用. 很多公司都投入人力去做这个,新浪也计划做一个Openstack的iso,集成OS,当你决定去做这个的时候,那么先了解一下目前的现状.说到部 署,肯定和OS有关,对于Openstack来说,无非就是Ubuntu还是CentOS,当然也会和OpenStack版本有关. 其实部署工具,最麻烦的地方,不是软件的配置和安装,而且网络.用户的网络情况太多,还有Openstack

自动化批量部署工具Ansible笔记之ansible安装与Inventory文件

一.ansible简介 ansible是一款自动化运维部署工具,与saltstack,pupet等不同的是,ansible没有采用C/S的架构,即没有客户端与服务端之分.这也就意味着,ansible的安装更加方便,管理节点更加灵活(任何一台安装了ansible的机器都可以充当管理节点). ansible提供了丰富的模块来方便的完成管理任务,对于复杂的管理任务来说,ansible通过编写playbook的方式来批量执行.而且ansible也可以并发的执行操作,可以同时在多台机器上执行playboo

Spark1.0.0 应用程序部署工具spark-submit

原文链接:http://blog.csdn.net/book_mmicky/article/details/25714545 随着Spark的应用越来越广泛,对支持多资源管理器应用程序部署工具的需求也越来越迫切.Spark1.0.0的出现,这个问题得到了逐步改善.从Spark1.0.0开始,Spark提供了一个容易上手的应用程序部署工具bin/spark-submit,可以完成Spark应用程序在local.Standalone.YARN.Mesos上的快捷部署. 1:使用说明 进入$SPARK

Linux系统管理之Python生态工具、文本处理和系统管理

一.Python生态工具 一.Python内置小工具 1.秒级启动一个下载服务器 Python 内置了一个下载服务器就能够显著提升效率了 . 例如, 你的同事要让你传的文件位于某一个目录下,那么,你可以进入这个目 录 , 然后执行下面的命令启动一个下载服务器 : Python2实现: python -m SimpleHTTPServer Python3实现: 在 Python 3 中,由于对系统库进行了重新整理,因此,使用方式会有不同: python -m http.server 执行上面的命令

2017-5-19 python部署

2017-5-19 python部署 新建 模板 小书匠 欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过设置里的修改模板来改变新建文章的内容. python部署样例 http://www.jianshu.com/p/f5d71630cd60 https://www.the5fire.com/auto-deploy-tool-for-python-app.html http://blog.csdn.net/philip502/article/details/13511625 htt