跳转到主要内容

编写出色Fabric文件的工具

项目描述

关于

fabtools 包含了一些有用的函数,帮助您编写 Fabric 文件。

fabtools 使管理系统用户、软件包、数据库等变得更加容易。

fabtools 包含了多个底层操作,以及一个名为 fabtools.require 的高级接口。

使用 fabtools.require 允许您使用更声明性的风格,类似于Chef或Puppet。

安装

要从PyPI安装最新版本

$ pip install fabtools

要从GitHub安装最新开发版本

$ pip install git+git://github.com/ronnix/fabtools.git

示例

以下是一个使用 fabtoolsfabfile.py 示例

from fabric.api import *
from fabtools import require
import fabtools

@task
def setup():

    # Require some Debian/Ubuntu packages
    require.deb.packages([
        'imagemagick',
        'libxml2-dev',
    ])

    # Require a Python package
    with fabtools.python.virtualenv('/home/myuser/env'):
        require.python.package('pyramid')

    # Require an email server
    require.postfix.server('example.com')

    # Require a PostgreSQL server
    require.postgres.server()
    require.postgres.user('myuser', 's3cr3tp4ssw0rd')
    require.postgres.database('myappsdb', 'myuser')

    # Require a supervisor process for our app
    require.supervisor.process('myapp',
        command='/home/myuser/env/bin/gunicorn_paster /home/myuser/env/myapp/production.ini',
        directory='/home/myuser/env/myapp',
        user='myuser'
        )

    # Require an nginx server proxying to our app
    require.nginx.proxied_site('example.com',
        docroot='/home/myuser/env/myapp/myapp/public',
        proxy_url='http://127.0.0.1:8888'
        )

    # Setup a daily cron task
    fabtools.cron.add_daily('maintenance', 'myuser', 'my_script.py')

支持的操作系统

fabtools 目前支持以下目标操作系统

  • 完全支持

    • Debian系列

      • Debian 6 (squeeze), 7 (wheezy), 8 (jessie)

      • Ubuntu 10.04 (lucid), 12.04 (precise), 14.04 (trusty)

  • 部分支持

    • RedHat系列

      • RHEL 5/6

      • CentOS 5/6

      • Scientific Linux 5/6

      • Fedora

    • Arch Linux, Manjaro Linux

    • Gentoo

    • SmartOS (Joyent)

欢迎贡献以帮助改进现有支持并将其扩展到其他Unix/Linux发行版!

变更日志

0.20.0 (2016-10-12)

  • 修复Ubuntu 14.04和Debian 8.0上的Apache支持

  • 将vagrant的maxsplit参数值更改为1

  • 修复nodejs无法读取json的问题

  • 修复PostgreSQL require文档中的错别字

  • 修复文件和nginx文档中的错别字

  • 清理代码,使其符合pep8规范

  • 在PostgreSQL中将用户名放在双引号内

  • 在检查setuptools时使用Python 3兼容的print语句

  • 在网络中添加MAC地址信息

  • 添加对conda包管理器的支持

  • 添加MySQL的主机选项支持

  • 修复不同版本的sfdisk

版本 0.19.0 (2014-07-05)

  • Python改进
    • 使用新官方下载URL为 setuptoolspip (Arnaud Vazard)

    • 修复传递局部标志时 virtualenv 的问题 (Troy J. Farrell)

  • Node.js改进
    • 修复未安装包时的 package_version (Alexandre Patry)

    • 在从源代码安装时添加 checkinstall 标志以构建和安装分发包 (Fabien Meghazi)

  • Arch Linux改进
    • 添加对ManjaroLinux变体的支持 (Gaëtan Lamothe)

    • 修复 setuptools 的支持 (Robin Lambertz)

    • 修复 supervisor 的支持 (Robin Lambertz)

    • 识别所有已知的发行版ID,并将它们归一化为 Arch

  • Debian/Ubuntu改进
    • 添加对Elementary OS变体的支持 (Arnaud Vazard)

版本 0.18.0 (2014-05-02)

此版本需要Fabric >= 1.7.0,并停止支持Python 2.5。

  • postgres 模块中添加 drop_userdrop_database

  • 将LinuxMint添加到Debian系列列表 (Frank Rousseau)

  • 添加对git远程的支持 (Bryan Folliot)

  • 添加对Tomcat的支持 (Jan Kowalski)

  • 添加对Gentoo / portage的支持 (Travis Shirk)

  • 添加对Mercurial的支持 (Travis Shirk)

  • 添加对GVM (Groovy环境管理器)的支持 (Bryan Folliot)

  • 文档修复和更新

  • MySQL改进
    • 指定特定用户时不需要密码

    • 在公共API中公开 mysql.query

  • Python改进
    • 切换到pip 1.5 (警告:您需要使用 allow_external 和/或 allow_unverified 选项来安装不在PyPI上托管的包)

    • 更新pip安装程序的GitHub下载URL (Guillaume Andreu Sabater)

    • 尝试下载pip/setuptools安装程序时进行重试

    • 添加对pip的 --exists-action 选项的支持

  • 改进 distrib_family() 中的操作系统支持并添加新的 UnsupportedFamily 异常

  • 在使用curl之前确保已安装它 (ponty)

  • Vagrant改进
    • 添加获取Vagrant版本的函数

    • 添加获取Vagrant机器状态的函数

    • 添加获取Vagrant机器列表的函数

    • 添加获取Vagrant基础盒子的函数

  • 文件改进
    • temp_dir 参数添加到 require.file 中(默认为 tmp

    • 添加 require.files.temporary_directory

    • 添加 files.umask 以获取用户的umask

    • 修复使用 sudorequire.file 的所有权和权限

    • 添加复制、移动、符号链接或删除文件的辅助工具

  • 修复 require.deb.uptodate_index

  • 使用 rpm 代替 yum 检查 RPM 软件包是否安装

  • 更新 JDK 安装以匹配 Oracle 网站的变化

  • 修复 cron.add_task(感谢 Dan Fairs 和 Ikuya Yamada)

版本 0.17.0(2013-12-06)

  • Vagrant改进
    • 修复对 Vagrant >= 1.3.0 的支持

    • 修复 vagrant 模块文档中的重复功能(Dean Malmgren)

  • 软件包管理改进
    • Ubuntu PPA 修复(Anthony Scalisi)

    • 添加对 opkg 软件包管理器的支持(ponty)

    • 根据上次更新时间添加条件 APT 索引更新(ponty)

  • 更新 files.upload_template 以匹配 Fabric 参数(感谢 Adam Patterson)

  • PostgreSQL 改进
    • 修复:在 _run_as_pg 中使用 run 代替 sudo(iiie)

    • 改进 SmartOS 和区域设置支持(Andreas Kaiser)

  • require.git.working_copy 中支持标签以及分支(Andreas Kaiser)

  • 服务管理改进
    • 改进 service.is_running 中的 upstart 支持(John MacKenzie)

    • service.is_running 中添加对 systemd 的支持(Adrien Raffin)

  • 改进 nodejsservicesupervisor 模块中 Arch Linux 的支持(Steeve Chailloux)

  • 允许自定义 nginx 软件包名称(Laurent Meunier)

  • 为 Apache 添加模块管理(Eugene Leonovich)

  • 修复 Python 2.5 的测试环境问题

  • 在本地构建文档时,如果可用,则使用新的 Read the Docs 主题

  • 修复使用 int UID/GID 创建用户/组的故障

版本 0.16.0(2013-10-26)

  • Redis 改进
    • 使绑定和端口参数明确

    • 改进文档

    • 升级默认版本到 2.6.16

  • Python改进
    • 改进使用特定 Python 解释器的支持(警告:API 变更)

    • 公开低级 virtualenv 操作

    • 改进 pip 安装

    • 在项目合并后从 distribute 切换到 setuptools 0.7+(警告:API 变更)

    • 当 setuptools 已安装时,不要安装 curlpython-dev 软件包(ponty)

    • 在 python.is_installed 中使软件包名称不区分大小写(ponty)

    • 修复使用 pythonbrew switch 时的 pip 版本解析问题

  • 修复设置前缀时 require.system.locales 的问题

  • 修复在全新的 Ubuntu 系统上 require.system.locale 的问题

  • 在 crontab 中添加可选环境变量

  • 修复 crontab 权限问题

  • 允许 MySQL 密码中包含特殊字符(Régis Behmo)

  • 修复某些服务启动不正确的问题(Chris Marinos)

  • getdevice_by_uuid 添加到磁盘模块(Bruno Adele)

  • 修复 git.working_copy 中的隐式目录名(iiie)

  • 使 require.sysctl 对 procps 启动失败具有鲁棒性

版本 0.15.0(2013-07-25)

  • 修复 user.local_home_directory 中缺少导入(Sebastien Beal)

  • 改进 Arch Linux 支持
    • 修复 Arch Linux 中的区域设置支持(Bruno Adele)

    • 在 Arch Linux 中添加对 yaourt 软件包管理器的支持(Bruno Adele)

  • 改进 redis 模块
    • 修复重启后 Redis 启动问题(Victor Perron)

    • 升级默认 Redis 版本到 2.6.14

  • 改进 git 模块
    • 为 git pull 和 checkout 添加可选的强制参数(Sebastien Beal)

  • python 模块进行了改进
    • 添加参数以使用特定的 Python 解释器(Bruno Adele)

    • 由于现在有了 CDN,停止使用 PyPI 镜像(Dominique Lederer)

  • Debian/Ubuntu改进
    • 向 deb.install() 添加可选版本参数(Anthony Scalisi)

    • 改进了安装 APT 公钥的支持(Santiago Mola)

  • SmartOS 的改进(Andreas Kaiser)
    • 修复近期 SmartOS 上的 md5sum 问题

    • 修复了 pkg.is_installed 某些包名下的错误(Sho Shimauchi)

    • 添加对 SmartOS 的远程系统识别支持

    • 添加对 SmartOS 的 require.git.command() 支持

  • RedHat 改进
    • 修复 rpm.install() 的损坏(Sho Shimauchi)

  • Oracle JDK 改进
    • 将默认版本升级到 7u25-b15(Sebastien Beal)

    • 修复 OpenJDK 安装时 Oracle JDK 版本解析问题

    • 修复 Debian squeeze 上 Oracle JDK 的安装问题(Stéphane Klein)

  • 更好的测试文档(感谢 Stéphane Klein)

  • 添加 require.directories()(Edouard de Labareyre)

  • 添加对 Apache Web 服务器的支持(Stéphane Klein)

  • 将默认 Node.js 版本升级到 0.10.13

版本 0.14.0(2013-05-22)

注意:Fabtools 现在需要 Fabric >= 1.6.0

  • 将默认 pip 版本升级到 1.3.1

  • 改进 vagrant 支持
    • 在功能测试中添加对 Vagrant 1.1 提供程序的支持

    • 在 vagrant 上下文管理器中设置 env.userenv.hosts

  • 添加 fabtools.system.cpus 以获取主机的 CPU 数量

  • 输出更简洁

  • 将 OS 识别函数移动到 fabtools.system

  • 更好的 Red Hat 系统支持

  • user 模块的改进
    • 修复 require.user 中 home 目录默认行为(Zhang Erning)

    • 添加对 SSH 认证密钥的支持(Kamil Chmielewski)

    • 添加对 SSH 已知主机公钥的支持

    • 向用户函数添加 non_unique 参数(Zhang Erning)

    • 获取本地用户家目录的绝对路径(Sebastien Beal)

  • 使用 SHOW DATABASES 测试 MySQL 的存在(Zhang Erning)

  • 改进 git 模块
    • 公开低级别的 fetch 操作(Andreas Kaiser)

    • 修复 require 模块中缺少导入(Muraoka Yusuke)

    • 需要 git 命令行工具

  • 在网络模块中以 root 身份使用 ifconfig

  • 为 Fabric 1.6.0 更新 OpenVZ 客户端上下文管理器

  • python 模块进行了改进
    • 改进了 distribute 的检测

    • 添加对 virtualenv --prompt 选项的支持(Artem Nezvigin)

    • 在 virtualenv 上下文管理器中允许相对路径

  • oracle_jdk 模块进行了改进
    • 将默认 Oracle JDK 版本升级到 7u21-b11(Kamil Chmielewski)

    • 添加对 Oracle JDK 版本 6 的支持(Sebastien Beal)

  • 修复了 fabtools.deb.upgrade 的损坏

  • 添加对 Arch Linux 软件包的支持(Bruno Adele)

  • 添加对 Linux 磁盘分区的支持(Bruno Adele)

  • 添加 OpenSSH 服务器加固(Adam Patterson)

  • 添加 systemd 模块(Jakub Stasiak)

  • 改进 redis 模块
    • 修复 Redis 配置的损坏(Victor Perron)

    • 将默认 Redis 版本升级到 2.6.13

  • 在 nginx 配置错误时中止

  • 将默认 Node.js 版本升级到 0.10.7

版本 0.13.0(2013-03-15)

  • 添加对管理远程 git 仓库的支持(Andreas Kaiser)

  • 向文档中添加 intersphinx(Andreas Kaiser)

  • 添加 HTTP 代理支持以加快功能测试

  • 将默认 Node.js 版本升级到 0.10.0

  • 将默认 Redis 版本升级到 2.6.11

  • 将默认 Oracle JDK 版本升级到 7u17-b02

  • 修复 vagrant 支持(感谢 Dominique Lederer 和 anentropic)

版本 0.12.0(2013-03-04)

  • 不要为系统用户创建家目录

  • 修复 SmartOS 上的 pkg.is_installed(感谢 Anthony Scalisi)

  • 修复 system.get_arch (感谢 Kamil Chmielewski)

  • 添加支持安装 Oracle JDK (感谢 Kamil Chmielewski)

  • 添加支持创建 Postgres 模式 (感谢 Michael Bommarito)

  • 修复 mysql.user_exists (感谢 Serge Travin)

版本 0.11.0 (2013-02-15)

  • 修复需要现有用户的问题 (感谢 Jonathan Peel)

  • 升级默认 Redis 版本到 2.6.10

  • 升级默认 Node.js 版本到 0.8.19

  • 更好地支持未安装 sudo 的远程主机

版本 0.10.0 (2013-02-12)

  • 启用/禁用 nginx 网站 (感谢 Sébastien Béal)

  • 添加对 SmartOS 的支持 (感谢 Anthony Scalisi)

  • 添加对 RHEL/CentOS/SL 的支持 (感谢 Anthony Scalisi)

版本 0.9.4 (2013-01-10)

  • 添加 0.9.3 中缺失的文件 (感谢 Stéfane Fermigier)

版本 0.9.3 (2013-01-08)

  • 修复用户创建中的错误 (感谢 pahaz 和 Stéphane Klein)

  • 添加支持创建组

版本 0.9.2 (2013-01-05)

  • 在 README 中添加语法高亮 (感谢 Artur Dryomov)

版本 0.9.1 (2013-01-04)

  • 修复文档格式问题

版本 0.9.0 (2013-01-04)

  • 改进用户创建和修改

  • files.ownerfiles.groupfiles.modefiles.md5sum 添加对 BSD / OS X 的支持 (感谢 Troy J. Farrell)

  • 改进 PostgreSQL 用户创建 (感谢 Troy J. Farrell 和 Axel Haustant)

  • reloadforce_reload 操作添加到 service 模块 (感谢 Axel Haustant)

  • 修复 require.redis 中缺失的导入 (感谢 svevang 和 Sébastien Béal)

  • 为 Python virtualenv 添加 clear 选项 (感谢 pahaz)

  • 升级默认 Redis 版本到 2.6.7

  • 升级默认 Node.js 版本到 0.8.16

  • 减少某些操作的冗余

  • 加快功能测试速度

版本 0.8.1 (2012-10-26)

  • 真正修复 pip 版本解析问题

  • 升级默认 pip 版本到 1.2.1

版本 0.8.0 (2012-10-26)

  • 改进用户模块 (感谢 Gaël Pasgrimaud)

  • 修复 Debian 上的区域设置支持问题 (感谢 Olivier Kautz)

  • 修复文档中的版本号问题 (感谢 Guillaume Ayoub)

  • 修复潜在的 pip 版本解析问题

版本 0.7.0 (2012-10-13)

  • 修复更改目录所有者要求 (感谢 Troy J. Farrell)

  • 添加获取文件所有者、组和模式的功能

版本 0.6.0 (2012-10-13)

  • 添加对 Node.js 的支持 (感谢 Frank Rousseau)

  • 修复对 Fabric >= 1.4.0 的依赖问题 (感谢 Laurent Bachelier)

版本 0.5.1 (2012-09-21)

  • 文档和打包修复

版本 0.5 (2012-09-21)

  • watch 上下文管理器现在允许您提供回调或在之后进行显式检查(警告:此更改与向后兼容性不兼容,请更新您的 fabfiles)

  • 添加对一些网络相关操作的支持
    • 获取接口分配的 IPV4 地址

    • 获取名称服务器 IP 地址列表

  • services 模块现在支持 upstart 和传统的 SysV-style /etc/init.d 脚本(感谢 Selwin Ong)

  • virtualenv 上下文管理器现在也可以与 local() 一起使用(感谢 khorn)

  • supervisor 模块现在使用 update 而不是 reload 以避免不必要的重启(感谢 Dan Fairs)

  • 添加对 OpenVZ 容器的支持(需要带有 OpenVZ 补丁的内核)

  • pip 现在可以使用下载缓存

  • 升级 Redis 版本到 2.4.17

  • 其他错误修复和改进

  • 支持 Ubuntu 12.04 LTS 和 Debian 6.0

  • 文档改进

版本 0.4 (2012-05-30)

  • 增加了支持要求任意APT源的功能

  • 增加了支持添加APT签名密钥的功能

  • 增加了支持要求具有主目录的用户的功能

  • 增加了vagrant辅助工具

  • 修复了Python虚拟环境上下文管理器

版本 0.3.2 (2012-03-19)

  • 修复了README格式

版本 0.3.1 (2012-03-19)

  • 修复了功能测试运行器中的错误

版本 0.3 (2012-03-19)

  • 增加了对Shorewall(Shoreline防火墙)的支持

  • 修复了Python 2.5兼容性问题

  • 重构了测试

版本 0.2.1 (2012-03-09)

  • 包装修复

版本 0.2 (2012-03-09)

  • 增加了对主机名和sysctl(内核参数)的支持

  • 增加了对Redis的支持

  • 简化了supervisor进程的API

版本 0.1.1 (2012-02-19)

  • 包装修复

版本 0.1 (2012-02-19)

  • 初始发布

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

fabtools-0.20.0.tar.gz (99.6 kB 查看散列)

上传时间

支持者: