Fabric API 以及实例讲解

上传人:我*** 文档编号:135947486 上传时间:2020-06-20 格式:DOC 页数:12 大小:88KB
返回 下载 相关 举报
Fabric API 以及实例讲解_第1页
第1页 / 共12页
Fabric API 以及实例讲解_第2页
第2页 / 共12页
Fabric API 以及实例讲解_第3页
第3页 / 共12页
Fabric API 以及实例讲解_第4页
第4页 / 共12页
Fabric API 以及实例讲解_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《Fabric API 以及实例讲解》由会员分享,可在线阅读,更多相关《Fabric API 以及实例讲解(12页珍藏版)》请在金锄头文库上搜索。

1、Fabric API 以及实例讲解Core API核心API主要有七类:带颜色的输出类(color output),上下文管理类(context managers), 装饰器类(decorators), 网络类(network), 操作类(oprations), 任务类(tasks), 工具类(utils)。Color Output每一个包含这个模块的函数返回String带有颜色。比如:1. From fabric.api import green,red 2. Print (red(This sentence is red, except for + green(these words, w

2、hich are green) + .)共包括以下:1. fabric.colors.blue(text, bold=False)2. fabric.colors.cyan(text, bold=False)3. fabric.colors.green(text, bold=False)4. fabric.colors.magenta(text, bold=False)5. fabric.colors.red(text, bold=False)6. fabric.colors.white(text, bold=False)7. fabric.colors.yellow(text, bold=F

3、alse)Context ManagersContext Managers使用都需要结合with语句。连续使用多个时可嵌套也可用逗号隔开连接使用。举例如下:1. with cd(/path/to/app):2. with prefix(workon myvenv):3. run(./manage.py syncdb)4. run(./manage.py loaddata myfixture)它等价于1. with cd(/path/to/app), prefix(workon myvenv):2. run(./manage.py syncdb)3. run(./manage.py loadda

4、ta myfixture)注意此时在python2.5中的写法:with nested(cd(/path/to/app), prefix(workon myvenv):此类包括:1. fabric.context_managers.cd(path) cd(远程主机更新工作目录) 任何被包括在 with cd(path):代码块里的命令run/sudo/get/put 相当于执行cd& 那么很明显它与 shell 命令cd的区别举例如下:1. with cd(/var/www):2. run(ls) # Turns into cd /var/www & ls比较1. run(cd /var/ww

5、w)2. run(ls)前者相当于执行:run(cd /var/www & ls)后者相当于执行:ls 时并没在/var/www 路径下,而是在默认路径$HOME路径下cd 可嵌套:1. with cd(/var/www):2. run(ls) # cd /var/www & ls3. with cd(website1):4. run(ls) # cd /var/www/website1 & lsfabric.contextmanagers.lcd(path) lcd(本地主机更新工作目录) 同 cd用法相同,只是它改变的的是本地工作目录,而 cd 改变的远程主机工作目录,所以它只能改变loc

6、al的调用以及put/get的本地参数,它的默认路径与fabfile所在路径相关,由环境变量env.realfabfile指定目前,cd和lcd的实现视是通过改变环境变量env.cwd和env.lcwd实现的,所以如果要实现这个也可以通过环境变量来实现,但是不建议这么做。因为按照官方文档说明,将来这种实现方式可能要改。fabric.context_managers.hide(*groups) hide(将指定参数输出级别默 认设置为 False) 指定默认隐藏的输出级别 group是一个或多个之前output 指定的类别之一,执行时它会将这些输出类型置为False。 比如你不想看到hostna

7、me:run:xxxx,以及阻止标准输出和错误就可以用下面这样1. def my_task():2. with hide(running, stdout, stderr):3. run(ls /var/www)4. fabric.context_managers.show(*groups) show(将指定参数输出级别默认设置为 False) 指定默认输出的输出级别 用法同 hide,作用刚好相反。默认是所有都输出,所以show的一个作用就是打开默认隐藏的debug。 fabric.context_managers.path(path, behavior=append) 默认设置为将参数pat

8、h附加在系统/用户环境变量$PATH,即 PATH=$PATH:指定 run/sudo 路径behavior默认还有两个参数:1. prepend:将指定参数path在$PATH前置即:PATH=:$PATH2. replace:将指定参数代替$PATH,即PATH=fabric.context_managers.prefix(command) prefix( 对 于 所 有 包括在其中的run/sudo 命令相当于再给定参数命令后加了&)这与cd用法相同,只是在嵌套调用时,它是直接在后面附加字符串,而不是cd中的修改字符串。大多数时候,会用它来export或alter环境变量。1. with

9、 prefix(workon myvenv):2. run(./manage.py syncdb)等价于执行#workon myvenv & ./manage.py syncdb嵌套调用举例:1. with prefix(workon myenv):2. run(ls)3. with prefix(source /some/script):4. run(touch a_file)结果是:1. $ workon myenv & ls2. $ workon myenv & source /some/script & touch a_file和cd 是兼容的,结合使用举例:1. with cd(/p

10、ath/to/app):2. with prefix(workon myvenv):3. run(./manage.py syncdb)4. run(./manage.py loaddata myfixture)结果如下:1. $ cd /path/to/app & workon myvenv & ./manage.py syncdb2. $ cd /path/to/app & workon myvenv & ./manage.py loaddata myfixturefabric.context_managers.settings(*args, *kwargs) setting(嵌套的上下文

11、管理器覆盖env 变量) 它有两个作用:大多数情况下,它会暂时覆盖/更新任何提到的关键字的 env 变量的值。比 如 : with settings(user=foo): 相 当 于 设 定env.user=foo。出了这个代码块,setting 中的值就会失效。此时注意 clean_revert=True 对作用域的影响,若此时在代码块中重新更新 env 的值,则该值就被更新即使出了代码块直到下 次 更 新 。1. # Before the block, env.parallel defaults to False, host_string to None2. with settings(p

12、arallel=True, host_string=myhost):3. # env.parallel is True4. # env.host_string is myhost5. env.host_string = otherhost6. # env.host_string is now otherhost7. # Outside the block:8. # * env.parallel is False again9. # * env.host_string is None again另 外 , 它 还 能 对 env 变 量 中 未 提 到 的 关 键 字(即env变量中没有的,这些

13、可能会是其他的上下文管理器) 进 行 指 定 值 , 比 如 :1. def my_task():2. with settings(3. hide(warnings, running, stdout, stderr),4. warn_only=True5. ):6. if run(ls /etc/lsb-release):7. return Ubuntu8. elif run(ls /etc/redhat-release):9. return RedHat最后就是clean_revert设置带来的变化注意对比前面例子:1. # Before the block, env.parallel de

14、faults to False, host_string to None2. with settings(parallel=True, host_string=myhost, clean_revert=True):3. # env.parallel is True4. # env.host_string is myhost5. env.host_string = otherhost6. # env.host_string is now otherhost7. # Outside the block:8. # * env.parallel is False again9. # * env.host_string remains otherhostDecorators1. fabric.decorators.hosts(*host_list) 定义哪个或者哪些主机来执行这些命令,定义方式:2. hosts(host1) 3. hosts(host1, host2) 4. hosts(host1,host2)5. fabric.decorators.roles(*role_list) 定义执行任务的 roles

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号