Python运维自动化开发之Fabric模块

Python运维自动化开发之Fabric模块,第1张

概述本章讲解fabric模块,与上一章的paramiko模块功能类似,fabric是在paramiko基础上又做了一层封装, *** 作起来更方便。主要用于多台服务器批量执行任务。非内置Python模块,需要手动安装:pipinstallfabric如果安装失败,可以尝试yum安装:yuminstallfabricFabric常用API:当我们写好fabric脚本

本章讲解fabric模块,与上一章的paramiko模块功能类似,fabric是在paramiko基础上又做了一层封装, *** 作起来更方便。主要用于多台服务器批量执行任务。

非内置python模块,需要手动安装:pip install fabric
如果安装失败,可以尝试yum安装:yum install fabric
Fabric常用API:


当我们写好fabric脚本后,需要用fab命令调用执行任务。
命令格式:fab [options][:arg1,arg2=val2,host=foo,hosts=’h1;h2’,…] …
fab命令有以下常用选项:

示例:

1、本地执行命令
from fabric.API import localdef command():    local('ls')# fab command[localhost] local: lsfabfile.py  fabfile.pyc  tab.py  tab.pycDone.

使用fab命令调用,默认寻找当前目录的fabfile.py文件。

2、远程执行命令
from fabric.API import rundef command():    run('ls')# fab -H 192.168.1.120 -u user command[192.168.1.120] Executing task 'command'[192.168.1.120] run: ls[192.168.1.120] Login password for 'user':[192.168.1.120] out: access.log  a.py[192.168.1.120] out:Done.disconnecting from 192.168.1.120... done.

如果在多台主机执行,只需要-H后面的IP以逗号分隔即可。

3、给脚本函数传入位置参数
from fabric.API import rundef hello(name="world"):    print("Hello %s!" % name)# fab -H localhost hello[localhost] Executing task 'hello'Hello World!Done.# fab -H localhost hello:name=Python[localhost] Executing task 'hello'Hello Python!Done.
4、主机列表组
from fabric.API import run, envenv.hosts = ['root@192.168.1.120:22', 'root@192.168.1.130:22']env.password = '123.com'env.exclude_hosts = ['root@192.168.1.120:22']   # 排除主机def command():   run('ls')

env作用是定义fabfile全局设定,类似于变量。还有一些常用的属性:

5、定义角色分组
# vi install.pyfrom fabric.API import run, envenv.roledefs = {    'web': ['192.168.1.10', '192.168.1.20'],    'db': ['192.168.1.30', '192.168.1.40']}env.password = '123'@roles('web')def task1():   run('yum install httpd -y')@roles('db')def task2():   run('yum install MysqL-server -y')def deploy():   execute(task1)   execute(task2)# fab -f install.py deploy
6、上传目录到远程主机
from fabric.API import *env.hosts = ['192.168.1.120']env.user = 'user'env.password = '123.com'def task():   put('/root/abc', '/home/user')   run('ls -l /home/user')# fab task
7、从远程主机下载目录
from fabric.API import *env.hosts = ['192.168.1.120']env.user = 'user'env.password = '123.com'def task():   get('/home/user/b', '/opt')   local('ls -l /opt')# fab task
8、打印颜色,有助于关键地方醒目
from fabric.colors import *def show():   print green('Successful.')   print red('Failure!')   print yellow('Warning.')# fab show

经过上面示例,有没有觉得fabric模块很适合批量自动部署呢!没错,通过编写简单的脚本,即可完成复杂的部署 *** 作。

而paramiko模块,更擅长远程执行命令,文件传输,可灵活的嵌入到运维系统中。

总结

以上是内存溢出为你收集整理的Python运维自动化开发之Fabric模块全部内容,希望文章能够帮你解决Python运维自动化开发之Fabric模块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1188701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存