search
HomeBackend DevelopmentPython TutorialHow to automate your tasks with Fabric

How to automate your tasks with Fabric

Dec 05, 2016 pm 01:27 PM
fabricpythonautomationAutomated deployment

First let’s look at an example. We know that under *NIX, the uname command is to check the release version of the system.

You can write a Fabric script like this:

from fabric.api import run
def host_type():
 run('uname -s')

Save the above script as fabfile.py, and you can execute the host_type script on multiple hosts through the fab command:

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

You may be required to enter your system password during execution.

Installation

If you see this, it means you are interested in Fabric. But the above operations cannot be performed on your site because you have not installed Fabric. Installing Fabric is very simple. You can use pip or easy_install, or you can download the original code for installation.

Task function

Very good, installing Fabric is not difficult for you. Maybe you have successfully performed the previous tasks, now let's go a little deeper.

The task in Fabric is a python function, let us call it "task function". Since it is a python function, some usage of functions also applies to task functions. For example, passing parameters, calling each other, returning values, etc.

First look at an example of passing parameters:

def hello(name="world"):
 print("Hello %s!" % name)

When executing a task, you can pass parameters to the task function through the command line parameters of fab:

$ fab hello:name=Holbrook
Hello Holbrook!

Examples of combined tasks are as follows:

from fabric.api import run
def host_type():
 run('uname -s')

def hello(name="world"):
 print("Hello %s!" % name)

def composite(name="world"):
 hello(name)
 host_type()

Commands provided by Fabric

We have seen the run function in the fabric.api module earlier, its function is to execute commands on the remote host. The local function is also provided in fabric.api for executing local (the host where the Fabric is located) commands.

is as follows:

from fabric.api import local
def lslocal():
 local('ls')

Similar to remote commands and local commands, Fabric also distinguishes between remote directories and local directories. The operations provided by Fabric on remote and local directories are cd and lcd respectively. This is easy to understand if you have used command line ftp.

Let’s see an example:

def filepath():
 remote_dir = '/opt/xxx'
 with cd(remote_dir):
  run("touch README")

The function of the above code is to enter the remote /opt/xxx directory and create a README file.

Fabric also provides many commands, such as file operations.

Manage server connections

In the previous examples, you need to specify the server in the fab command line parameters. It is troublesome when you have to manage a large number of servers. Fabric provides a dictionary env of environment variables, which contains hosts dictionary items, which can define the server that needs to be connected.

is as follows:

from fabric.api import env, run

env.hosts = ['host1', 'host2']
def mytask():
 run('ls /var/www')

You can also specify the host list to execute the task separately for each task:

from fabric.api import env, run

def set_hosts():
 env.hosts = ['host1', 'host2']

def mytask():
 run('ls /var/www')

When you execute fab set_hosts mytask like this, you can execute mytask tasks for the two hosts specified in set_hosts. If you are too lazy to write a function, it is the same as specifying it on the fab command line:

fab mytask:hosts="host1;host2"

In order to make batch tasks more convenient, Role is also defined in Fabric. If you are interested, you can read its official documentation.

Manage SSH passwords, users, ports

Although it is more recommended to use SSH public key authentication, Fabric still provides a mechanism for managing passwords. Fabric provides two layers of passwords.

If your servers have the same password, you can set the default password in env.password; if the server passwords are different, you can also set the (host, password) pair in env.passwords for each server Separate ssh password.

The host string above is in this format: username@hostname:port. Therefore, when specifying the ssh password, the ssh user is also specified. Like passwords, you can also specify a default user in env.user. If neither is specified, you will be prompted to enter the password when executing the fab command.

Using Fabric, you can manage SSH connections of a series of hosts (including host names, users, passwords), define a series of task functions, and then flexibly specify which tasks to perform on which hosts. This is very useful in scenarios where a large number of hosts need to be managed, such as operation and maintenance, private cloud management, automated application deployment, etc.

Summary

This article is just an introductory document, which far does not reflect the power of Fabric. In fact, Fabric also includes a large number of functions, such as Role definition, remote interaction and exception handling, concurrent execution, file operations, etc., and is not limited to the command line method. Fabric can be called in your application.

The above is the entire content of this article. I hope the content of this article can arouse your interest in Fabric and solve problems in your practical applications. If you have any questions, you can leave a message to communicate.

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Python: Games, GUIs, and MorePython: Games, GUIs, and MoreApr 13, 2025 am 12:14 AM

Python excels in gaming and GUI development. 1) Game development uses Pygame, providing drawing, audio and other functions, which are suitable for creating 2D games. 2) GUI development can choose Tkinter or PyQt. Tkinter is simple and easy to use, PyQt has rich functions and is suitable for professional development.

Python vs. C  : Applications and Use Cases ComparedPython vs. C : Applications and Use Cases ComparedApr 12, 2025 am 12:01 AM

Python is suitable for data science, web development and automation tasks, while C is suitable for system programming, game development and embedded systems. Python is known for its simplicity and powerful ecosystem, while C is known for its high performance and underlying control capabilities.

The 2-Hour Python Plan: A Realistic ApproachThe 2-Hour Python Plan: A Realistic ApproachApr 11, 2025 am 12:04 AM

You can learn basic programming concepts and skills of Python within 2 hours. 1. Learn variables and data types, 2. Master control flow (conditional statements and loops), 3. Understand the definition and use of functions, 4. Quickly get started with Python programming through simple examples and code snippets.

Python: Exploring Its Primary ApplicationsPython: Exploring Its Primary ApplicationsApr 10, 2025 am 09:41 AM

Python is widely used in the fields of web development, data science, machine learning, automation and scripting. 1) In web development, Django and Flask frameworks simplify the development process. 2) In the fields of data science and machine learning, NumPy, Pandas, Scikit-learn and TensorFlow libraries provide strong support. 3) In terms of automation and scripting, Python is suitable for tasks such as automated testing and system management.

How Much Python Can You Learn in 2 Hours?How Much Python Can You Learn in 2 Hours?Apr 09, 2025 pm 04:33 PM

You can learn the basics of Python within two hours. 1. Learn variables and data types, 2. Master control structures such as if statements and loops, 3. Understand the definition and use of functions. These will help you start writing simple Python programs.

How to teach computer novice programming basics in project and problem-driven methods within 10 hours?How to teach computer novice programming basics in project and problem-driven methods within 10 hours?Apr 02, 2025 am 07:18 AM

How to teach computer novice programming basics within 10 hours? If you only have 10 hours to teach computer novice some programming knowledge, what would you choose to teach...

How to avoid being detected by the browser when using Fiddler Everywhere for man-in-the-middle reading?How to avoid being detected by the browser when using Fiddler Everywhere for man-in-the-middle reading?Apr 02, 2025 am 07:15 AM

How to avoid being detected when using FiddlerEverywhere for man-in-the-middle readings When you use FiddlerEverywhere...

What should I do if the '__builtin__' module is not found when loading the Pickle file in Python 3.6?What should I do if the '__builtin__' module is not found when loading the Pickle file in Python 3.6?Apr 02, 2025 am 07:12 AM

Error loading Pickle file in Python 3.6 environment: ModuleNotFoundError:Nomodulenamed...

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.