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
标签:run,Fabric,部署,修饰符,LNMP,192.168,webservers,env,php 来源: https://blog.csdn.net/chengqiuming/article/details/88075881