使用Fabric进行远程LAMP(MariaDB)环境批量部署

一、Fabric简介

Fabric是一个Python库,用来提高基于 SSH 的应用部署和系统管理效率。
它提供的操作包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入、中止执行等。

二、Fabric安装

1.安装pip包管理工具,pip是一个安装和管理python包的工具

$ tar -zxvf pip-10.0.1.tar.gz    #解压缩安装包
$ cd /pip-10.0.1        #进入安装目录
$ python setup.py install    #安装
$ pip -V             #查看pip版本,测试是否安装成功

2.安装Fabric,需要联网

$ pip install fabric3        #pip安装fabric3
$ fab -V             #查看fabric版本,测试是否安装成功

三、Fabric语法

1.命令行参数

-f 指定fabric入口文件,默认的入口文件名fabfile.py
-l 显示定义好的函数名称列表

2.本地操作

1)执行本地命令
函数:local()
例子:local('touch f1')
解释:在本地创建新文件

2)切换本地目录(需要with包裹)
函数:lcd()
例子:lcd('/root')
解释:进入本地root家目录下

3)将本地文件上传至远程目录
函数:put()
例子:put('/f1','/root/')
解释:将本地根目录下的f1文件上传至远程主机的root家目录下

3.远程操作,Fabric真正强大之处不是在执行本地命令,而是可以方便的执行远程机器上的Shell命令

1)执行远程命令
函数:run()
例子:run('touch f1')
解释:在远程主机创建新文件

2)以sudo的权限执行远程命令
函数:sudo()
例子:sudo('touch f1')
解释:以sudo的权限在远程主机创建新文件

3)切换远程目录(需要with包裹)
函数:cd()
例子:cd('/root')
解释:进入远程主机root家目录下

4)从远程主机下载文件至本地
函数:get()
例子:get('/f1','/mnt/f2')
解释:把远程主机根目录下的f1文件下载至本地/mnt目录下,命名为f2

4.env全局属性定义,配置远程ip、用户、密码、端口、角色、网关等,支持多属性

1)env.hosts定义目标主机,多个目标主机用逗号分隔
例子:env.hosts = ["192.168.10.1","192.168.10.2"]

2)env.port定义端口
例子:env.port = 22

3)env.user定义用户
例子:env.user = "root"

4)env.password定义密码
例子:env.password = "123456"

5)env.passwords定义多台主机密码,用逗号分隔
例子:env.passwords = {
            "root@192.168.10.1:22":"123456",
            "root@192.168.10.2:22":"123456"
            }

6)env.roledefs定义角色,多个角色用逗号分隔
例子:env.roledefs = {
            "webserver":["192.168.10.1","192.168.10.2"],
            "dbserver":["192.168.10.3","192.168.10.4"]
            }

7)env.gateway定义网关
例子:env.gateway = "192.168.10.254"

四、fabfile脚本编写

1.脚本编写

$ vim fabfile.py

# -*- coding:utf-8 -*-

from fabric.api import *

env.hosts = ["192.168.181.20","192.168.181.30"]
env.passwords = {
                "root@192.168.181.20:22":"123456",
                "root@192.168.181.30:22":"123456"
}

@task
def test():
    with cd('/root'):
        run("du -sh")

解释:@task是函数修饰符,标注过的函数fabric命令,非标注过的fabric命令不可见
      with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的"清理"工作,释放资源

2.执行脚本

$ chmod +x fabfile.py        #赋予执行权限
$ fab -f /fabfile.py -l        #查看定义好的函数名称列表,绝对路径执行
$ fab -f /fabfile.py test    #执行指定函数



五、批量安装脚本的编写

# -*- coding:utf-8 -*-

from fabric.api import *

env.hosts = ["192.168.181.20","192.168.181.30"]
env.passwords = {
                "root@192.168.181.20:22":"123456",
                "root@192.168.181.30:22":"123456"
        }

@task
def LAMP_MariaDB_install():

    put("/etc/yum.repos.d/cdrom.repo","/etc/yum.repos.d/cdrom.repo")
    run("mount /dev/sr0 /media")
        run("yum clean all")
        run("yum repolist all")

    run("yum -y install httpd")
        run("yum -y install mariadb-server")
        run("yum -y install php php-fpm php-mysql php-mbstring")

    run("systemctl start httpd")
        run("systemctl start mariadb")

    with cd("/var/www/html/"):
                run("echo '<?php phpinfo(); ?>' >> index.php")








[本日志由 admin 于 2018-06-25 01:55 PM 更新]
上一篇: Nagios监控插件简述及其调用的方法
下一篇: Oracle数据库备份
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭