Python使用Fabric模块实现自动化运维(3)

env.user = 'root'
env.gateway = '192.168.1.23'  #定义堡垒机IP,作为文件上传、执行的中转设置
env.hosts = ['192.168.1.21','192.168.1.22']
env.passwords = {
    'root@192.168.1.21:22':'123456',
    'root@192.168.1.22:22':'abcdef',
    'root@192.168.1.23:22':'123abc',  #堡垒机账号信息
}

lpackpath = '/home/install/lnmp.tar.gz'  #本地安装包路径
rpackpath = '/tmp/install'    #远程安装包路径

@task
def put_task():  #上传文件
    run('mkdir -p /tmp/install')
    #默认情况下,当命令执行失败时,Fabric会停止执行后续命令。有时,我们允许忽略失败的命令继续执行,比如run(‘rm /tmp/abc')在文件不存在的时候有可能失败,这时可以用with settings(warn_only=True):执行命令,这样Fabric只会打出警告信息而不会中断执行。
    with settings(warn_only=True):
        result = put(lpackpath,rpackpath)  #上传
    if result.failed and not confirm('put file failed,Continue[Y/N]?'):
        abort('Aborting file put task!')

@task
def run_task():  #安装
    with cd('/tmp/install'):
        run('tar -zxvf lnmp.tar.gz')
        with cd('lnmp/'):    #使用with继承/tmp/install目录位置状态
            run('./CentOS.sh')

@task
def go():  #上传、安装组合命令
    put_task()
    run_task()

simple3.py

simple3.py

执行:

#上传文件

fab simple3.py put_task

#执行文件

fab simple3.py run_task

#上传并执行

fab simple3.py go

---------------------------------------------------------------

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/40098e2093e52e978ccd02af3dd3f467.html