码迷,mamicode.com
首页 > 其他好文 > 详细

Fabric:系统批量运维管理器!!!

时间:2016-04-08 15:33:11      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:python 自动化运维 fabric

项目背景:








实验环境:

vmware workstation 11

centos6.5的系统下  

fabric服务器主机:ip:192.168.0.14

堡垒机:ip:192.168.0.44

目标服务器:ip:192.168.0.26

SecureCRT (ssh远程连接软件)







软件介绍:

Fabric官网对于它的说明:

Fabric is a Python (2.5-2.7) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.

It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution.

译文:

Fabric是基于python(2.5到2.7)实现ssh命令行工具,简化了ssh的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括命令执行、文件上传、下载及完整执行日志输出。









实验流程:

一、软件下载

[root@Master ~]# easy_install fabric  #首先你得确保你安装了python-setuptools

二、查看是否安装成功

技术分享

可以看到没有报错,说明模块成功导入。

三、官网入门测试示例

1、fabric官网示例图

技术分享2、在自己主机上测试

技术分享


技术分享因为我已经添加了ssh信任,所以没有提示输入远程主机的密码。

如果你不清楚如何设置,可以看我的下面的这篇文章。

http://9399369.blog.51cto.com/9389369/1750915 

四、远程执行命令,并且在本机上得到输出


技术分享五、查看本地与远程主机信息。

1、创建一个脚本文件

技术分享

2、通过fab命令调用local_task任务函数

技术分享3、通过fab命令调用remote_task任务函数

技术分享六、动态获取远程目录列表

1、脚本文件编写

[root@Master ~]# vim fuchao02.py

#!/usr/bin/env python

from fabric.api import *


env.user="root"

env.hosts=[‘192.168.0.44‘]

env.passwd="123456"



@runs_once

def input_raw():

        return prompt("please input directory name:",default="/root")


def worktask(dirname):

        run("ls -l "+dirname)


@task


def go():

        getdirname = input_raw()

        worktask(getdirname)

2、脚本执行

技术分享

七、网关模式文件上传与执行

1、脚本文件的编写

[root@Master ~]# cat fuchao03.py
#!/usr/bin/env python
from fabric.api import *
from fabric.context_managers import *
from fabric.contrib.console import confirm


env.user="root"
env.gateway=‘192.168.0.44‘     #堡垒机ip
env.hosts=[‘192.168.0.26‘]     #真正的服务器
env.password="123456"          #服务器密码


lpackpath="/home/lnmp1.2.tar.gz"
rpackpath ="/home/install"

@task
def put_task():
        run("mkdir -p /home/install")
        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("/home/install"):
                run("tar -zxvf lnmp1.2.tar.gz")
                with cd("lnmp1.2/"):
                        run("./install.sh ")

@task
def go():
        put_task()
        run_task()

2、脚本执行

技术分享

技术分享技术分享可以看到一切都是这么简单方便。。。。




项目总结:






本文出自 “积少成多” 博客,谢绝转载!

Fabric:系统批量运维管理器!!!

标签:python 自动化运维 fabric

原文地址:http://9399369.blog.51cto.com/9389369/1761658

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!