本文介绍Fabric的几种装饰器task,host,role,runs_once,serial,parallel。
1.task
fabfile中所有可调用的对象都是一个task,但是如果使用了task装饰器显示的定义了一个task,没有通过task装饰器装饰的函数将被不会认为一个task。
from fabric.api import run,task,env env.hosts = ['192.168.244.155'] @task def hostname(): run('hostname') def ls(path='.'): sudo('ls {}'.format(path))
验证
[root@Ansible Python]# fab -f fab1.py -l Available commands: hostname
2.host
fabfile文件中我们可以通过env.hosts定义,或通过fab命令行参数-H指定。指定host时可以同时指定用户名和端口号:username@hostname:port,通过命令行指定对哪些hosts指定哪些任务,fab mytask:hosts=”host1;host2″
通过hosts装饰器指定对哪些主机执行task.
#!/usr/bin/python from fabric.api import run,task,env,hosts,sudo host1 = '192.168.244.155' host2 = '192.168.244.244' @hosts(host1) def hostname(): run('hostname') @hosts(host2) def ls(path='.'): sudo('ls {}'.format(path))
验证
[root@Ansible Python]# fab -f fab1.py hostname [192.168.244.155] Executing task 'hostname' [192.168.244.155] run: hostname [192.168.244.155] out: localhost.localdomain [192.168.244.155] out:
3.role
定义服务器角色。
from fabric.api import run,task,env,hosts,sudo,roles env.roledefs = { 'db':['192.168.244.155'], 'web':['192.168.244.244'], } @roles('db') def hostname(): run('hostname') @roles('web') def ls(path='.'): sudo('ls {}'.format(path))
验证
[root@Ansible Python]# fab -f fab1.py ls:/ [192.168.244.244] Executing task 'ls' [192.168.244.244] sudo: ls / [192.168.244.244] out: bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var web [192.168.244.244] out:
4.runs_once
task只执行一次,防止被多次调用。
6.serial
强制当前task串行执行。使用该装饰器后,即使用户通过命令行参数–parallel,该task依然会串行。
5.parallel
强制当前task并行。
其他功能函数
1.execute
对task经行分装,将多个task组合成一个
2.util
辅助性函数,fabric.util
3.colors
颜色函数,fabric.colors
「 文章如果对你有帮助,请点个赞哦^^ 」 
0
若无特殊注明,文章均为本站原创或整理发布。
转载请注明本文地址:https://om.fangxiaoxiong.com/2922.html