阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

自动化运维工具Fabric – Fabfile 的创建和使用

275次阅读
没有评论

共计 1602 个字符,预计需要花费 5 分钟才能阅读完成。

该篇文章来源于 Fabric 的官方文档,原文为 Fabfile construction and use

这篇文章包含了关于 fabfiles 的以下两项

  1. 怎样编写最好的 fabfile
  2. 写好后怎样使用 fabfile

Fabfile 发现

Fabric 能够加载 Python 模块(比如:fabfile.py)或者 包(比如:一个包含 __init__.py 文件的名叫 fabfile 的目录)。它默认寻找命名为 fabfile 的文件或者目录,要么是 fabfile/,要么是fabfile.py

fabfile 发现算法搜索调用用户的当前工作目录或者是任何父目录。因此,它是面向“工程”使用的,这个工程的源码树的根目录有一个 fabfile.py文件。无论在这个树的哪里,当使用 fab 命令的调用的时候,这个 fabfile 文件将被发现。

可以使用命令行参数 -f 来重写指定名字搜索到的 fabfile文件,或者是加一个 fabricrc 行来设置 fabfile 的值。例如,你想命名你的 fabfilefab_tasks.py,你可以创建这样一个文件,然后调用命令 fab -f fab_tasks.py <task name>,或者是添加如下 fabfile = fab_tasks.py~/.fabricrc文件里面。

如果给定的 fabfile 名字中除了文件名之外还包含路径(比如:../fabfile.py 或者是 /dir1/dir2/custom_fabfile),它将被作为一个文件路径对待,并且没有任何排序搜索就直接验证是否存在。当在这种模式下,波浪线扩展将被应用。因此你可以参考:~/personal_fabfile.py

注:为了访问你的 fabfile文件的内容,Fabric 做了一个正常的 import (实际是一个 import) – it does not do any eval-ing or similar. 为了完成这个工作, Fabric 临时把发现的 fabfile 文件的路径添加进 Python 的加载路径中 (并且然后立即移除了它)

注:Changed in version 0.9.2: The ability to load package fabfiles

Importing Fabric

因为 Fabric 是 Python 编写的。你可以以任何的你想的方式 import 它的组件。尽管如此,为了封装以及便利(使得更加容易的包装 Fabric 的脚本),Fabric 的公共 API 是维护在 fabric.api 模块中。

所有的 Fabric 的 Operations, Context Managers, Decorators 和 Utils 被包含在这个模块中,作为一个单独的标记命名空间。这可以使你的 fabfiles 文件有一个相当简单以及方便的接口调用。

from fabric.api import *
# call run(), sudo(), etc etc

这不是最好的技术实践(因为一些原因),你仅仅是使用了一些 Fabric API 的调用。一个更好的方法是精确的使用 from fabric.api import env, run 或者是类似的方法。尽管如此,在大多数重要的 fabfiles,你可以通过使用 import 星号来使用所有的或者大部分的 API。

from fabric.api import *

主要包括如下:

from fabric.api import abort, cd, env, get, hide, hosts, local, prompt, \
    put, require, roles, run, runs_once, settings, show, sudo, warn

在这个示例我们感觉到实用主义重写了最佳实践。

使用 Vagrant 和 Fabric 用于集成测试 http://www.linuxidc.com/Linux/2014-07/104113.htm

Fabric:Python 远程部署工具 http://www.linuxidc.com/Linux/2014-05/101616.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1602字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中