部署minio使用python联合shell脚本进自动化部署
操作系统 | ip地址 | cpu | 内存 |
---|---|---|---|
centos7.9 | 192.168.42.103 | 1c | 2G |
1. 下载wget
yum -y install wget
2. 下载minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio
3. 授权可执行权限
chmod +x minio
4. 移动文件位置
mv minio /usr/local/bin
5. 编写系统启动文件.service文件
vim /usr/lib/systemd/system/minio.service
[Unit]
Description=minio
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
# 配置 minio 二进制文件地址
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
#指定配置文件路径
EnvironmentFile=/home/minio/conf/minio.conf
#按照配置文件方式指定运行
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
下面路径根据自己需要可自行修改
EnvironmentFile=/home/minio/conf/minio.conf
ExecStart=/usr/local/bin/minio server $MINIO_OPTS
6. 创建minio数据及配置文件目录
mkdir -pv /home/minio/{data,conf}
7. 配置文件内容
vim /home/minio/conf/minio.conf
# 用户名
MINIO_ACCESS_KEY=minioadmin
# 密码
MINIO_SECRET_KEY=minioadmin
# 存放数据的路径
MINIO_VOLUMES="/home/minio/data"
# 启动端口
MINIO_OPTS="--console-address :19000"
8. 启动minio
# 8.1 启动minio
systemctl restart minio
# 8.2 设置开机自启
systemctl enable minio
9. 安装python3
这个python脚本主要内容为监听bucket桶下,上传后缀.jar文件,自动去执行/root/test.sh脚本,在脚本中可以定义一些自动发布流程
yum -y install python3
# 编辑python文件
vim minio-service.py
from minio import Minio
from minio.commonconfig import CopySource
import subprocess, sys
import os
from configparser import ConfigParser
import paramiko
# -*- coding: utf-8 -*-
# 定义MinIO服务器信息
minio_endpoint = "192.168.42.103:9000"
minio_access_key = "minioadmin"
minio_secret_key = "minioadmin"
minio_secure = False
# 定义要监听的存储桶名称和事件
bucket_name = "services"
events = ["s3:ObjectCreated:*"]
def handle_event(event):
# 从事件中获取文件信息
object_name = event['Records'][0]['s3']['object']['key']
# 打印文件名称
file_name = os.path.split(object_name)[1].replace(".jar", "")
print(f"文件名称: {file_name}")
# 执行shell脚本
os.system(f'sh /root/test.sh {file_name}')
# 创建MinIO客户端
minio_client = Minio(
minio_endpoint,
access_key=minio_access_key,
secret_key=minio_secret_key,
secure=minio_secure
)
# 使用listen_bucket_notification方法监听存储桶事件
bucket_notifications = minio_client.listen_bucket_notification(
bucket_name,
prefix='',
suffix='',
events=events
)
# 处理监听到的事件
for event in bucket_notifications:
handle_event(event)
10. 安装minio依赖库
pip3 install minio paramiko
11. 启动.py
nohup python3 minio-service.py > minio.log 2>&1 &
问题记录
1. 如果系统开启防火墙需要加入端口
1.1 临时添加
firewalld-cmd --add-port=19000/tcp
1.2 永久添加
firewall-cmd --add-port=19000/tcp --permanent
#重新载入配
firewall-cmd --reload