微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Fabric部署LNMP业务服务环境

一 点睛

业务上线之前最关键的一项任务便是环境部署,往往一个业务涉及多种应用环境,比如Web、DB、PROXY、CACHE等,本示例通过env.roledefs定义不同主机角色,再使用“@roles('webservers')”修饰符 绑定到对应的任务函数,实现不同角色主机的部署差异。

二 代码

#coding=utf-8
#!/usr/bin/env python
from fabric.colors import *
from fabric.api import *

env.user='root'
env.roledefs = {             #定义业务角色分组
    'webservers': ['192.168.0.101'],
    'dbservers': ['192.168.0.105']
}

env.passwords = {
    'root@192.168.0.101:22': '123456',
    'root@192.168.0.105:22': '123456'
}

@roles('webservers')        # webtask任务函数引用'webservers'角色修饰符
def webtask():              # 部署Nginx PHP PHP-fpm等环境
    print yellow("Install Nginx PHP PHP-fpm...")
    with settings(warn_only=True):
        run("yum -y install Nginx")
        run("yum -y install PHP-fpm PHP-MysqL PHP-mbstring PHP-xml PHP-mcrypt PHP-gd")
        run("chkconfig --levels 235 PHP-fpm on")
        run("chkconfig --levels 235 Nginx on")

@roles('dbservers')         # dbtask任务函数引用'dbservers'角色修饰符
def dbtask():               # 部署MysqL环境
    print yellow("Install MysqL...")
    with settings(warn_only=True):
        run("yum -y install MysqL MysqL-server")
        run("chkconfig --levels 235 MysqLd on")

@roles ('webservers', 'dbservers')      # publictask任务函数同时引用两个角色修饰符
def publictask():                       # 部署公共类环境,如epel、ntp等
    print yellow("Install epel ntp...")
    with settings(warn_only=True):
        run("rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm")
        run("yum -y install ntp")

def deploy():
    execute(publictask)
    execute(webtask)
    execute(dbtask)

三 运行结果

[root@localhost pymaintain]# fab -f 7_3_8.py deploy

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐