Python之——部署LNMP业务服务环境

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/79042734

上线之前我们要部署相应的环境,往往一个业务涉及多种环境,比如Web、DB、Proxy、Cache等,本实例通过env.roledefs定义不同角色,再使用@roles("webservers")修饰符绑定到对应的任务函数,实现不同角色的主机部署差异。具体代码如下:

# -*- coding:UTF-8 -*-
'''
部署LNMP业务服务环境
Created on 2018年1月12日

@author: liuyazhuang
'''

from fabric.colors import *
from fabric.api import *

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

env.passwords = {
    'root@192.168.209.121:22' : "密码1",
    'root@192.168.209.122:22' : "密码2",
    'root@192.168.209.123:22' : "密码3",
}

@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') #dbatsk任务函数引用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)
本实例通过角色来区别不同业务服务环境,分别部署不同的程序包。我们只需要一个Python脚本就可以完成不同业务环境的定制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰 河

可以吃鸡腿么?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值