自动化运维之Fabric

作者: AlicFeng | 来源:发表于2016-08-06 23:09 被阅读469次

心情不太好,搞搞代码,提高心境!
--程序猿


****fabric简介****
一句话:fabric是python语言实现的一个利用ssh高效部署和管理系统的工具。


****fabric安装****

  • pip
sudo pip install fabric
  • apt-get
sudo apt-get install fabric
  • 源码安装
git clone https://github.com/fabric/fabric.git
sudo python setup.py install

****简单使用****
模拟服务器的信息
host-1【运维机器】:172.17.42.1
host-2【服务器1】:172.17.0.1
host-3【服务器2】:172.17.0.2
测试的python脚本

from fabric.api import *
#主机信息 
host1="root@172.17.0.1:22"
host2="root@172.17.0.2:22"
#定义主机列表
env.hosts=[host1,host2]
env.password="fenglican"
#部署任务
def demo():
    run("uname -a")

查看任务的方法
fabric默认的文件名是fabfile.py,倘若不使用改名字,查看任务需要加入参数-f

fab -l

执行部署任务

fab demo

****fabric常用命令****

fab -l #显示可执行任务
fab -H #指定host,多host以逗号隔开
fab -P #并发数,默认串行
fab -R #指定角色
fab -w #warn_only 遇到异常直接退出
fab -f #指定入口文件 

****fabric常用函数****

#切换本地目录
lcd()

#切换远程目录
cd()

#执行本地命令
local()

#执行远程命令
run()

#执行远程sudo
sudo()

****基础编辑任务****

#coding:utf-8
#python方式引用包
from fabric.api import *
import web
import db

#控制服务器的主机信息 ssh语法
host1="root@172.17.0.1:22"
host2="root@172.17.0.2:22"

#env主机列表
env.hosts=[host1,host2]
env.password="fenglican"
#假如密码不一样的话可以使用字典
#env.passwords = {
#   host1 : "fengalic"
#   host2 : "alic"
#}

#@task
def demo00():
    cd("/fengalic/") #切换不存在的目录 默认会导致整个进程终止
    run("ls -a")

#多命令 中间某个命令异常发生后进程直接退出,从而不进行下面的命令
def demo01():
    with cd("/fengalic"):
        run("ls -a")

#多命令 中间某个命令异常发生后继续进行,并不提示错误信息
def demo02():
    with settings(warn_only=True):
        cd("/fengalic/")
    run("ls -a")

#装饰器 @hosts指定host @parallel并行 @task新型任务
@hosts(host1)
def demo03():
    run("uname -a")

@parallel
def demo04():
    run("uname -a")

#角色定义
env.roledefs = {
    "web" : [host1], #多个一逗号隔开
    "db" : [host2]
}
#指定角色的任务
#@roles("web")
def demo05():
    run("uname -a")

#新型任务 类似命名空间 推荐使用 
#@task
def demo05():
    run("uname -a")

****LAMP环境搭建实战****
环境:ubuntu-32bit

from fabric.api import *

host1 = "alic@172.17.0.1:22"
env.hosts = [host1]
env.passwords = {
    host1 : "fenglican"
}

def install_mysql():
    sudo("apt-get install mysql-server mysql-client -y")

def install_php5():
    sudo("apt-get install php5 -y")
    sudo("apt-get install php5-mysql -y")
    sudo("apt-get install php5-gd php5-cgi -y")

def install_apache2():
    sudo("apt-get install apache2 -y")
    sudo("apt-get install libapache2-mod-auth-mysql -y")
    sudo("service apache2 restart")

@task
def install_lamp():
    install_apache2()
    install_php5()
    install_mysql()


****价值源于技术,贡献源于分享****

相关文章

  • fabric2 没有fabric.api

    python三大神器之fabric(2.0新特性) 转载地址 fabric经常出现在自动化运维领域,批量处理一些运...

  • Python3 Fabric(持续更新)

    Python3 Fabric(超好用的自动化运维模块): 简介 Fabric是Python中比较强大的SSH自动化...

  • 自动化运维之Fabric

    心情不太好,搞搞代码,提高心境!--程序猿 ****fabric简介****一句话:fabric是python语言...

  • Ansible Module 快速入门 ad-hoc

    1.自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 2.Ansible...

  • Ansible服务

    第一章 Ansible介绍 0.手工运维与自动化运维 1.手动运维时代 2.自动化运维 3.自动化运维带来的好处 ...

  • Ansible服务

    第一章 Ansible介绍 1.手工运维与自动化运维 1.手动运维时代 2.自动化运维 3.自动化运维带来的好处 ...

  • 运维自动化平台之路

    运维自动化平台之路 导读 引 什么是运维 自动化运维体系 后记 引 运维自动化已经不再是新鲜名词,特别是随着D...

  • fabric回忆录

    fabric是一个基于Python的自动化运维框架,主要实现功能如下: 1.远程命令与回执--local/run2...

  • 一文读懂云上DevOps能力体系

    简介: 阿里云ECS自动化运维套件架构师,深度拆解云上运维能力体系建设:自动化运维等级金字塔、自动化运维的进阶模式...

  • 2小时玩转Ansible 企业级运 维配置自动化工具

    一、运维配置自动化工具 1.1 运维自动化分类 系统预备自动化 配置自动化 监控自动化 项目交付自动化 1.2 运...

网友评论

    本文标题:自动化运维之Fabric

    本文链接:https://www.haomeiwen.com/subject/cyzksttx.html