编写出色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
示例
以下是一个使用 fabtools 的 fabfile.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为 setuptools 和 pip (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_user 和 drop_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
修复使用 sudo 时 require.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)
改进 nodejs、service 和 supervisor 模块中 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 已安装时,不要安装 curl 和 python-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.user 和 env.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.owner、files.group、files.mode 和 files.md5sum 添加对 BSD / OS X 的支持 (感谢 Troy J. Farrell)
改进 PostgreSQL 用户创建 (感谢 Troy J. Farrell 和 Axel Haustant)
将 reload 和 force_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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | be95136f84c4cbe52dc2b28237da07fb7c3f86fe35a64fa6fe645c6d31598e3f |
|
MD5 | 9dc3eae65447681e13dd499c7ec5211a |
|
BLAKE2b-256 | 02f6e463829422ff0202d3b3ade50d284da714d10f98145994a57a5f727b006b |