python fabric模块入门

Fabric 是一个 Python (2.5-2.7) 库和命令行工具,用来流水线化执行 SSH 以部署应用或系统管理任务。

安装:

pip install fabric


首先来一个入门通用demo,hello world。

文件:hello_world.py

# coding: utf-8

def hello():
    print ‘Hello world!‘

运行结果:

默认查找当前目录下fabfile.py文件,若文件名非fabfile.py,则需要使用-f指定文件。

$ fab -f hello_world.py hello
Hello world!

Done.


env(环境变量)对象说明:

env.hosts   #定义目标主机,可以用IP或主机名表示,以python的列表形式定义。如env.hosts=[‘192.168.1.21‘,‘192.168.1.22‘]
env.exclude_hosts   #排除指定主机,如env.exclude_hosts=[‘192.168.1.21‘]
env.user   #定义用户名,如env.user=‘root‘
env.port   #定义端口,默认为22,如env.port=‘22‘
env.password   #定义密码,如env.password=‘123456‘
env.passwords  #定义多个密码,不同主机对应不同密码,如:env.passwords = {‘[email protected]:22‘:‘123456‘,‘[email protected]:22‘:‘654321‘}
env.gateway   #定义网关(中转、堡垒机)IP,如env.gateway=‘192.168.1.23
env.roledefs   #定义角色分组,比如web组合db组主机区分开来:env.roledefs = {‘webserver‘:[‘192.168.1.21‘,‘192.168.1.22‘],‘dbserver‘:[‘192.168.1.25‘,‘192.168.1.26‘]}

env.deploy_release_dir   #自定义全局变量,格式:env. + ‘变量名称‘,如env.age,env.sex等

其中roledefs使用demo如下:

env.roledefs = {‘front‘:[‘192.168.1.111‘],‘api‘:[‘192.168.1.112‘]}

@roles(‘front‘)
def nginx_restart():
    run(‘service nginx restart‘)

@roles(‘front‘, ‘api‘)
def uptime():
    run(‘uptime‘)


常用API:

local    #执行本地命令,如local(‘uname -s‘)
lcd      #切换本地目录,如lcd(‘/home‘)
cd       #切换远程目录
run     #执行远程命令
sudo   #sudo方式执行远程命令,如sudo(‘/etc/init.d/httpd start‘)
put     #上次本地文件导远程主机,如put(‘/home/user.info‘,‘/data/user.info‘)
get     #从远程主机下载文件到本地,如:get(‘/data/user.info‘,‘/home/user.info‘)
prompt  #获得用户输入信息,如:prompt(‘please input user password:‘)
confirm  #获得提示信息确认,如:confirm(‘Test failed,Continue[Y/N]?‘)
reboot   #重启远程主机,如:reboot()

@task   #函数修饰符,标识的函数为fab可调用的,非标记对fab不可见,纯业务逻辑
@runs_once   #函数修饰符,标识的函数只会执行一次,不受多台主机影响


Demo(demo.py):

运行命令:fab -f demo.py list

# coding: utf-8
from fabric.api import *

env.user = ‘root‘
env.roledefs = {
        ‘api‘: [‘10.211.55.5:22‘],
        }
env.passwords = {
        ‘[email protected]:22‘: ‘linjianfeng‘,
        }

def list_files():
    run(‘ls -l‘)

@task  # 使用@task对fab命令可见,其他没有使用@task标记的函数对fab命令不可用,fab -f demo.py -l可查看开放函数
@roles(‘api‘)
def list():
    list_files()

原文地址:https://www.cnblogs.com/yuansiwu/p/8583637.html

时间: 2024-10-11 04:10:35

python fabric模块入门的相关文章

python fabric模块 生产环境dubbo代码包发布管理完整实例

#!/usr/bin/env python import os import time import fabric from fabric.api import * from fabric.context_managers import * from fabric.colors import * from fabric.contrib.console import confirm env.hosts=['XXXX.XXXX.XXXX.XXXX'] env.user='user' env.pass

Python Fabric 模块 介绍及简单应用

来源:<Python自动化运维> Fabric的安装 Fabric支持pip.easy_install或源码安装方式,很方便解决包依赖的问题,具体安装命令如下( 根据用户环境,自行选择pip或easy_install): pip install fabric easy_install fabric Fabric依赖第三方的setuptools.Crypto.paramiko包的支持,源码 安装步骤如下: # yum -y install python-setuptools # wget htt

Python入门之Python引用模块和查找模块路径

#这篇文章主要介绍了Python引用模块和Python查找模块路径的相关资料,需要的朋友可以参考下 模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块):对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是

[Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验

1. ssh客户端生成key 1 $ ssh-keygen -t rsa -b 4096 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/Users/(username)/.ssh/id_rsa): vagrantid_rsa 4 Enter passphrase (empty for no passphrase): 5 Enter same passphrase again: 6

利用Python Fabric配置主机间SSH互信和添加公钥

本文主要讲述如何利用Python的Fabric模块编写一个脚本用于配置多个主机间SSH互信以及如何将管理员自己的公钥批量添加到多个主机中. 脚本说明 该脚本只提供如题所述的少量功能,用于帮助熟悉Python的Fabric和SSH几项简单的基本配置,原本的目的是想通过Python和Fabric实现对主机进行一些批量操作,如完成主机的初始化等.因为SSH的配置具有通用性和必要性,所以便有了此文,希望对Linux运维和使用Python.Fabric自动化部署感兴趣的人有所帮助. 该脚本将继续维护,直至

Python黑客编程入门教程

我真正开始学习Python是从今年4月份看到2017年的国赛试题之后,之前虽也零星接触过,但都只是皮毛,所以对于我,必须要借助这样一些目标的驱动,才有动力或压力去深入学习下去,这也是我坚持带比赛的一个主要原因. 这套教程是在7月份暑假集训期间录制的,所以从我开始学习Python到录制教程前后也就3个多月的时间,因而教程的内容肯定是相对比较粗糙的.之所以要这么赶,主要是必须要在暑假集训期间让这批准备参加11月份省赛的同学能对Python入门,省赛要跟国赛走,而Python必定是今年省赛的重点.还有

《Python编程从入门到实践》_第十章_文件和异常

读取整个文件 文件pi_digits.txt #文件pi_digits.txt 3.1415926535 8979323846 2643383279 下面的程序打开并读取整个文件,再将其内容显示到屏幕中: with open("pi_digits.txt") as fileobject: contents = fileobject.read() print(contents) #运行结果 3.1415926535 8979323846 2643383279 使用函数open()打开文件

使用python fabric搭建RHEL 7.2大数据基础环境以及部分优化

1.使用python fabric进行Linux基础配置 使用python,可以让任何事情高效起来,包括运维工作,fabric正式这样一套基于python2的类库,它执行本地或远程shell命令提供了操作的基本套件(正常或通过sudo)和上传/下载文件,如提示用户输入运行辅助功能,或中止执行. 用Python3开发的部署工具叫fabric3:fabric3,和fabric一样最大特点是不用登录远程服务器,在本地运行远程命令,几行Python脚本就可以轻松部署. 典型用途包括创建一个包含一个或多个

智普教育Python视频教程之入门基础篇,python笔记

智普教育Python视频教程之入门基础篇,python笔记 print id()内存地址 type()变量类型 windows命令行下edit命令 python数据类型不需要指定类型 定义hostname="www.google.com" 结果运行后总是告诉我NameError: name 'socket' is not defined 哪位帮我分析一下,怎么改才对 没用过socket,不过你试着在第一行加入 import socket C:\>notepad somefile.