The Fabric library – the deployment and development task manager

Exclusive offer: get 50% off this eBook here
Python Tools for Visual Studio

Python Tools for Visual Studio — Save 50%

Leverage the power of the Visual Studio IDE to develop better and more efficient Python projects with this book and ebook

$16.99    $8.50
by Cathy Wang Martino Sabia | April 2014 | Open Source

In this article by Martino Sabia and Cathy Wang, authors of Python Tools for Visual Studio, we will learn everything about a Python library and a command-line tool that allows execution in application deployment and administration tasks.

(For more resources related to this topic, see here.)

Essentially, Fabric is a tool that allows the developer to execute arbitrary Python functions via the command line and also a set of functions in order to execute shell commands on remote servers via SSH. Combining these two things together offers developers a powerful way to administrate the application workflow without having to remember the series of commands that need to be executed on the command line.

The library documentation can be found at http://fabric.readthedocs.org/.

Installing the library in PTVS is straightforward. Like all other libraries, to insert this library into a Django project, right-click on the Python 2.7 node in Python Environments of the Solution Explorer window. Then, select the Install Python Package entry.

The Python environment contextual menu

Clicking on it brings up the Install Python Package modal window as shown in the following screenshot:

It's important to use easy_install to download from the Python package index. This will bring the precompiled versions of the library into the system instead of the plain Python C libraries that have to be compiled on the system.

Once the package is installed in the system, you can start creating tasks that can be executed outside your application from the command line. First, create a configuration file, fabfile.py, for Fabric. This file contains the tasks that Fabric will execute.

The previous screenshot shows a really simple task: it prints out the string hello world once it's executed. You can execute it from the command prompt by using the Fabric command fab, as shown in the following screenshot:

Now that you know that the system is working fine, you can move on to the juicy part where you can make some tasks that interact with a remote server through ssh. Create a task that connects to a remote machine and find out the type of OS that runs on it.

The env object provides a way to add credentials to Fabric in a programmatic way

We have defined a Python function, host_type, that runs a POSIX command, uname–s, on the remote. We also set up a couple of variables to tell Fabric which is the remote machine we are connecting to, i.e. env.hosts, and the password that has to be used to access that machine, i.e. env.password.

It's never a good idea to put plain passwords into the source code, as is shown in the preceding screenshot example.

Now, we can execute the host_typetask in the command line as follows:

The Fabric library connects to the remote machine with the information provided and executes the command on the server. Then, it brings back the result of the command itself in the output part of the response.

We can also create tasks that accept parameters from the command line. Create a task that echoes a message on the remote machine, starting with a parameter as shown in the following screenshot:

The following are two examples of how the task can be executed:

We can also create a helper function that executes an arbitrary command on the remote machine as follows:

def execute(cmd): run(cmd)

We are also able to upload a file into the remote server by using put:

The first argument of put is the local file you want to upload and the second one is the destination folder's filename. Let's see what happens:

Deploying process with Fabric

The possibilities of using Fabric are really endless, since the tasks can be written in plain Python language. This provides the opportunity to automate many operations and focus more on the development instead of focusing on how to deploy your code to servers to maintain them.

Summary

This article provided you with an in-depth look at remote task management and schema migrations using the third-party Python library Fabric.

Resources for Article:


Further resources on this subject:


Python Tools for Visual Studio Leverage the power of the Visual Studio IDE to develop better and more efficient Python projects with this book and ebook
Published: April 2014
eBook Price: $16.99
Book Price: $26.99
See more
Select your format and quantity:

About the Author :


Cathy Wang

Cathy Wang is a user-experience designer who specializes in service design and experience strategy. She has worked on many cross-channel projects, and has served as design lead for enterprise services in fields from Telecom to public sectors around the globe. Cathy has worked for world-class design agencies bringing complex visions to life. In her free time she builds web projects and apps. She is infinitely curious about new technologies and the variety of experiences they bring.

Martino Sabia

Martino is an inquisitive developer with close to 30 years of coding background. Throughout his years of working with different platforms and languages, he has always focussed on finding new and creative ways of using different technologies. Based in Italy, Martino spent his career in various startup companies, from junior developer to software architect, and now as a project lead for Deltatre. He works on consumer-facing heavy-traffic websites and media streaming platforms in the sports industry.

Books From Packt


Python Multimedia
Python Multimedia

Parallel Programming with Python
Parallel Programming with Python

 Python Geospatial Development
Python Geospatial Development

Practical Maya Programming with Python
Practical Maya Programming with Python

 Python Geospatial Development - Second Edition
Python Geospatial Development - Second Edition

Python High Performance Programming
Python High Performance Programming

Python Testing Cookbook
Python Testing Cookbook

Python Data Visualization Cookbook
Python Data Visualization Cookbook


Code Download and Errata
Packt Anytime, Anywhere
Register Books
Print Upgrades
eBook Downloads
Video Support
Contact Us
Awards Voting Nominations Previous Winners
Judges Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software
Resources
Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software