https://github.com/fabtools/fabtools
Tools for writing awesome Fabric files
https://github.com/fabtools/fabtools
fabtools python python-fabric
Last synced: 6 months ago
JSON representation
Tools for writing awesome Fabric files
- Host: GitHub
- URL: https://github.com/fabtools/fabtools
- Owner: fabtools
- License: bsd-2-clause
- Created: 2011-09-05T01:44:24.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2019-12-13T07:52:20.000Z (almost 6 years ago)
- Last Synced: 2025-05-04T00:10:56.292Z (6 months ago)
- Topics: fabtools, python, python-fabric
- Language: Python
- Homepage: http://fabtools.readthedocs.org/
- Size: 1.04 MB
- Stars: 1,249
- Watchers: 42
- Forks: 206
- Open Issues: 104
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
- awesome-python-resources - GitHub - 54% open · ⏱️ 16.09.2019): (DevOps 工具)
README
About
=====
``fabtools`` includes useful functions to help you write your `Fabric `_ files.
``fabtools`` makes it easier to manage system users, packages, databases, etc.
``fabtools`` includes a number of low-level actions, as well as a higher level interface called ``fabtools.require``.
Using ``fabtools.require`` allows you to use a more declarative style, similar to Chef or Puppet.
Installing
==========
To install the latest release from `PyPI `_
.. code-block:: console
$ pip install fabtools
To install the latest development version from `GitHub `_
.. code-block:: console
$ pip install git+git://github.com/ronnix/fabtools.git
Example
=======
Here is an example ``fabfile.py`` using ``fabtools``
.. code-block:: python
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')
Supported targets
=================
``fabtools`` currently supports the following target operating systems:
- full support:
- Debian family:
- Debian 6 (*squeeze*), 7 (*wheezy*), 8 (*jessie*)
- Ubuntu 10.04 (*lucid*), 12.04 (*precise*), 14.04 (*trusty*)
- partial support:
- RedHat family:
- RHEL 5/6
- CentOS 5/6
- Scientific Linux 5/6
- Fedora
- Arch Linux, Manjaro Linux
- Gentoo
- SmartOS (Joyent)
Contributions to help improve existing support and extend it to other
Unix/Linux distributions are welcome!