美文网首页
Python3 Fabric(持续更新)

Python3 Fabric(持续更新)

作者: 敲到顺为止 | 来源:发表于2021-06-01 10:40 被阅读0次

Python3 Fabric(超好用的自动化运维模块):

简介

Fabric是Python中比较强大的SSH自动化工具库,不仅可以在windows本地调试Linux,还支持Python代码,相比较ansbile比较灵活

一:安装Python3

1.去Python官网下载Python安装包,这里以Linux环境为例子,下载:

Python-3.8.0.tgz openssl-1.0.2j.tar.gz

2.将安装包放置/usr/local/page目录,page属于自定义,然后执行以下命令

##解压安装包
cd /usr/local/page
tar -zxvf Python-3.8.0.tgz
tar -zxvf  openssl-1.0.2j.tar.gz

##编译openssl
cd /usr/local/page/openssl-1.0.2j
./config
make
make install

##编译Python3.8
cd /usr/local/kernel/Python-3.8.0

###vi  ./Modules/Setup
#去掉一下这几行的注释符#
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
# _socket socketmodule.c timemodule.c
#SSL=/usr/local/ssl
# _ssl_sl.c \
# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
#-L$(SSL)/lib -lssl -lcrypto

./configure --prefix=/usr/local/python3 

make

make install

##建立软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3

sed -i.bak '$a export PATH=$PATH:/usr/local/python3/bin' /etc/profile

##让环境变量生效(注意要严格按照以下步骤执行,不然Python3无法安装模块)
source /etc/profile

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/python3/lib 加入环境变量
然后需要重新编译:
./configure --prefix=/usr/local/python3 --enable-shared
make 
make install

##安装Fabric3模块
pip3 install --index https://pypi.mirrors.ustc.edu.cn/simple/   Fabric3

3.检查Fabric3有没有安装完成


image.png

二、Fabric3基础使用

1.基础api使用

这里使用了三个 fabric 的封装:
run: 用于执行远程命令的封装
sudo:以 sudo 权限执行远程命令
env: 保存用户配置的字典 。( 保存了相关的配置,比如登录用户名 env.user,密码 env.password,端口 env.port 等,如果没有指定用户名那么默认使用当前用户,端口使用22 )

2.代码示例

该代码实在windows本地通过Pycharm执行的,假如该py文件名为test.py,Linux机器可通过以下命令执行
fab -f test.py run

import os
import sys
from collections import OrderedDict
from fabric.api import *
from fabric.colors import *
import time

##设置要连接的主机的IP,SSH端口,密码
##SET_HOST_INFORMATION##
def set_host():
    env.roledefs = {
        'k8s-master1': ['192.168.1.171'],
        'k8s-master2': ['192.168.1.172'],
        'k8s-master3': ['192.168.1.173'],
        'k8s-node1': ['192.168.1.174'],
        'k8s-node2': ['192.168.1.175']
    }
    env.passwords = {
        'root@192.168.1.171:22': '12345678',
        'root@192.168.1.172:22': '12345678',
        'root@192.168.1.173:22': '12345678',
        'root@192.168.1.174:22': '12345678',
        'root@192.168.1.175:22': '12345678'
    }

##通过@roles注解来表明哪台机器需要执行命令
@roles('k8s-master1', 'k8s-master2', 'k8s-master3', 'k8s-node1', 'k8s-node2')
def shut_down():
    sudo("init 0")


##关键执行函数,通过run方法执行execute来执行自动化脚本
def run():
    ##设置机器参数
    execute(set_host)
    ##执行命令
    execute(shut_down)


if __name__ == "__main__":
    run()

相关文章

网友评论

      本文标题:Python3 Fabric(持续更新)

      本文链接:https://www.haomeiwen.com/subject/zgrwsltx.html