Fabric是一个Python的第三方库,可以进行Linux的远程部署,批量执行各种命令,况且,机器出错的次数比你少多了呢。
(附详细的SSH免密登录过程)
环境介绍
- Windows10的WSL IP:
192.168.1.66
下面简称物理机
. - VMware Centos服务器 IP:
192.168.1.40
下面简称服务器
.
准备工作
- Python3
- 类Linux操作系统 | 没有Linux用Windows的WSL也可以.
技术难点
- SSH免密登录.
深入浅出
SSH免密
使用ssh-keygen
命令在物理机生成公钥和私钥, 生成完毕后在当前登录的用户目录下.ssh
文件夹下.
在服务器中的.ssh
文件夹下创建一个名为authorized_keys
文件并设置权限为600
.
cd ~/.ssh
touch authorized_keys
chmod 600 authorized_keys
将物理机的id_rsa.pub
里面的内容复制进服务器新建的authorized_keys
中.
可以使用scp
命令,将id_rsa.pub
文件发送到服务器中,然后使用cat
命令将id_rsa.pub
的内容追加到authorized_keys
文件中.
物理机:
scp ~/.ssh/id_rsa.pub root@192.168.1.40:~/.ssh/
服务器:
cat id_rsa.pub >> authorized_keys
使用物理机远程SSH连接服务器验证是否免密成功
安装Fabric
在物理机执行下面的安装命令即可安装完毕.
python3 -m pip install fabric
找一个空的目录新建名为fabfile.py
的文件.
编写Fabric脚本
使用vim
编辑刚刚新建的py文件.
from fabric import Connection, task
@task
def devploy(c):
with Connection("root@192.168.1.40") as c:
c.run("ifconfig")
写入完毕后保存,运行fab deploy
即可看到服务器的执行回显.
可以用来一键替换更新yum源, 代码如下:
from fabric import Connection, task
@task
def deploy(c):
with Connection("root@192.168.1.40") as c:
c.run('cd /etc/yum.repos.d/ && \
mv CentOS-Media.repo CentOS-Media.repo.backup && \
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo && \
yum clean all && \
yum makecache && \
yum update')
不是不愿意学习新的东西, 而是想知道学习这个能做什么, 加油.