Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Understanding fabric

Tags:

fabric

I've just stumbled upon Fabric and the documentation doesn't really make it obvious how it works.

My educated guess is that you need to install it on both client-side and server-side. The Python code is stored on the client side and transferred through Fabric's wire-protocol when the command is run. The server accepts connections using the OpenSSH SSH daemon through the ~/.ssh/authorized_keys file for the current user (or a special user, or specified in the host name to the fab command).

Is any of this correct? If not, how does it work?

like image 379
André Caron Avatar asked Jun 10 '11 15:06

André Caron


People also ask

What are the 3 main types of fabric?

There are three types of woven fabric: plain weave, satin weave and twill weave. Examples of popular woven fabrics are chiffon, crepe, denim, linen, satin and silk. For knit fabric, think of a hand-knit scar; the yarn is formed into an interconnecting loop design, which allows it to stretch significantly.

What are the main types of fabric?

There are two main types of fabrics: natural and synthetic. Natural fabrics such as wool, cotton, silk, and linen are made from animal coats, cotton-plant seed pods, fibers from silkworms, and flax (fiber from the stalk of a plant), respectively.


2 Answers

From the docs:

Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.

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.

So it's just like ssh'ing into a box and running the commands you've put into run()/sudo().

There is no transfer of code, so you only need to have ssh running on the remote machine and have some sort of shell (bash is assumed by default).

If you want remote access to a python interpreter you're more looking at something like execnet.

If you want more information on how execution on the remote machine(s) work look to this section of the docs.

like image 103
Morgan Avatar answered Sep 19 '22 14:09

Morgan


Most what you are saying is correct, except that the "fabfile.py" file only has to be stored on your client. An SSH server like OpenSSH needs to be installed on your server and an SSH client needs to be installed on your client.

Fabric then logs into one or more servers in turn and executes the shell commands defined in "fabfile.py". If you are located in the same dir as "fabfile.py" you can go "fab --list" to see a list of available commands and then "fab [COMMAND_NAME]" to execute a command.

The user on the server does not need to be added to "~/.ssh/authorized_keys" but if it is you don't have to type the password every time you want to execute a command.

like image 21
Rune Kaagaard Avatar answered Sep 20 '22 14:09

Rune Kaagaard