8000 GitHub - nine2onetech/fabric: Simple, Pythonic remote execution and deployment. (Python 2.7/3.4+ fork)
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

nine2onetech/fabric

 
 

Repository files navigation

DEPRECRECATED

The excellent Fabric now finally supports Python3, there is thus no longer a use for this project. Please use mainline Fabric instead.

No really, deprecated

Read above.

What it said here before

Fabric3 is a Python (2.7 or 3.4+) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks. This is a fork of the original Fabric (git) with the intention of providing support for Python3, while maintaining support for all non-archaic versions of Python2. Please see below for known differences with the upstream version of Fabric. To switch to Fabric3, simply do:

pip uninstall Fabric
pip install Fabric3

... and don't forget to update any requirements.txt files accordingly:

# Fabric==1.12.0
Fabric3==1.12.0.post1

It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution.

Typical use involves creating a Python module containing one or more functions, then executing them via the fab command-line tool. Below is a small but complete "fabfile" containing a single task:

from fabric.api import run

def host_type():
    run('uname -s')

If you save the above as fabfile.py (the default module that fab loads), you can run the tasks defined in it on one or more servers, like so:

$ fab -H localhost,linuxbox host_type
[localhost] run: uname -s
[localhost] out: Darwin
[linuxbox] run: uname -s
[linuxbox] out: Linux

Done.
Disconnecting from localhost... done.
Disconnecting from linuxbox... done.

In addition to use via the fab tool, Fabric3's components may be imported into other Python code, providing a Pythonic interface to the SSH protocol suite at a higher level than that provided by e.g. the Paramiko library (which Fabric3 itself uses.)

Differences with Fabric

Generally this project aims to be a drop-in replacement for Fabric and will periodically merge any changes from the upstream project. Any differences are noted here:

  • The release installs as Fabric3. Despite its name, this version is tested with Python2.7 and Python 3.4+.
  • Versioning is based on upstream Fabric releases, with a postX appended. So version "1.12.0.post1" is equivalent to Fabrics own "1.12.0" release.
  • fabric.utils.RingBuffer is removed, use collections.deque from the standard library instead.
  • In Python3, Fabric3 implements its own version of contextlib.nested based on contextlib.ExitStack, since it's no longe 5F54 r available in Python3. Please note that it was removed with good reason, we do not encourage you use it.
  • Fabric3 requires the six library for compatibility.
  • Minimum requirements for paramiko have been bumped to 1.17.0.

ChangeLog

This ChangeLog lists changes other then that of the upstream Fabric release.

1.12.0.post1
  • Sync with 1.12.0 upstream release.
  • Fix prompts in Python3.5 (see #18)
1.11.1.post1
  • Require paramiko 1.17.0 or later.
1.10.2.post2 (2016-01-31)
  • Identify as Fabric3 on the command-line (#4).
  • Fix UnicodeDecodeError when receiving remote data (#5).
  • Require paramiko 1.16.0.
1.10.2.post3 (2016-02-07)
  • Cleanup imports in main code base and test suite.
  • Add Python 2/3/3.5 classifiers in setup.py.
  • Remove fabric.utils.RingBuffer with collections.deque from stdlib.
  • Remove with_statement __future__ import, it does nothing in Python 2.6+.

About

Simple, Pythonic remote execution and deployment. (Python 2.7/3.4+ fork)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%
0