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有没有安装完成
二、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()
网友评论