Home Backend Development Python Tutorial How to automate your tasks with Fabric

How to automate your tasks with Fabric

Dec 05, 2016 pm 01:27 PM
fabric python automation Automated 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')
Copy after login

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
Copy after login

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)
Copy after login

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!
Copy after login

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()
Copy after login

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')
Copy after login

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")
Copy after login

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')
Copy after login

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')
Copy after login

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"
Copy after login

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 of this Website
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

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 Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP and Python: Code Examples and Comparison PHP and Python: Code Examples and Comparison Apr 15, 2025 am 12:07 AM

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

Python vs. JavaScript: Community, Libraries, and Resources Python vs. JavaScript: Community, Libraries, and Resources Apr 15, 2025 am 12:16 AM

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

How to run programs in terminal vscode How to run programs in terminal vscode Apr 15, 2025 pm 06:42 PM

In VS Code, you can run the program in the terminal through the following steps: Prepare the code and open the integrated terminal to ensure that the code directory is consistent with the terminal working directory. Select the run command according to the programming language (such as Python's python your_file_name.py) to check whether it runs successfully and resolve errors. Use the debugger to improve debugging efficiency.

Can visual studio code be used in python Can visual studio code be used in python Apr 15, 2025 pm 08:18 PM

VS Code can be used to write Python and provides many features that make it an ideal tool for developing Python applications. It allows users to: install Python extensions to get functions such as code completion, syntax highlighting, and debugging. Use the debugger to track code step by step, find and fix errors. Integrate Git for version control. Use code formatting tools to maintain code consistency. Use the Linting tool to spot potential problems ahead of time.

Is the vscode extension malicious? Is the vscode extension malicious? Apr 15, 2025 pm 07:57 PM

VS Code extensions pose malicious risks, such as hiding malicious code, exploiting vulnerabilities, and masturbating as legitimate extensions. Methods to identify malicious extensions include: checking publishers, reading comments, checking code, and installing with caution. Security measures also include: security awareness, good habits, regular updates and antivirus software.

Can vs code run in Windows 8 Can vs code run in Windows 8 Apr 15, 2025 pm 07:24 PM

VS Code can run on Windows 8, but the experience may not be great. First make sure the system has been updated to the latest patch, then download the VS Code installation package that matches the system architecture and install it as prompted. After installation, be aware that some extensions may be incompatible with Windows 8 and need to look for alternative extensions or use newer Windows systems in a virtual machine. Install the necessary extensions to check whether they work properly. Although VS Code is feasible on Windows 8, it is recommended to upgrade to a newer Windows system for a better development experience and security.

Python: Automation, Scripting, and Task Management Python: Automation, Scripting, and Task Management Apr 16, 2025 am 12:14 AM

Python excels in automation, scripting, and task management. 1) Automation: File backup is realized through standard libraries such as os and shutil. 2) Script writing: Use the psutil library to monitor system resources. 3) Task management: Use the schedule library to schedule tasks. Python's ease of use and rich library support makes it the preferred tool in these areas.

What is vscode What is vscode for? What is vscode What is vscode for? Apr 15, 2025 pm 06:45 PM

VS Code is the full name Visual Studio Code, which is a free and open source cross-platform code editor and development environment developed by Microsoft. It supports a wide range of programming languages ​​and provides syntax highlighting, code automatic completion, code snippets and smart prompts to improve development efficiency. Through a rich extension ecosystem, users can add extensions to specific needs and languages, such as debuggers, code formatting tools, and Git integrations. VS Code also includes an intuitive debugger that helps quickly find and resolve bugs in your code.

See all articles