1.shell脚本如下:
#!/bin/bash
# 判断用户是否是root
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
# 判读java环境是否安装,如果没有则进行安装
if ! type "java" > /dev/null; then
# Update package list and install Java
apt-get update
apt-get install -y openjdk-8-jdk
#如果找不到进程就认为安装失败并退出脚本
if ! type "java" > /dev/null; then
echo "Failed to install JDK"
exit 1
fi
else
echo "Java is already installed"
fi
#设置JAVA环境变量
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
# 下载解压kafka 安装包
wget http://mirrors.estointernet.in/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz
tar xvzf kafka_2.13-2.6.0.tgz
# 判断kafka的部署文件是否存在
if [[ ! -d "kafka_2.13-2.6.0" ]]; then
echo "Failed to download Kafka binary package"
exit 1
fi
# Start Kafka
cd kafka_2.13-2.6.0
# 判断kafka的进程号是否存在,不存在就开启服务
if ! lsof -i:9092 > /dev/null; then
bin/kafka-server-start.sh config/server.properties &
echo "Kafka server started successfully"
else
echo "Kafka server is already running"
fi
脚本解读:
在这个脚本中,我们首先检查了脚本是否以 root 身份运行,然后更新了包列表并安装了 Java,接着检查了 JDK 是否安装成功,然后设置了 JAVA_HOME 环境变量,下载并解压了 Kafka 的二进制包,最后启动了 Kafka 服务器。如果 Kafka 服务器已经在运行了,脚本会提示用户并退出。
2. python脚本如下
import os
import subprocess
import sys
def deploy_kafka():
# 检查java是否安装
if not any(java_executable in os.listdir("/usr/bin") for java_executable in ["java", "javac"]):
# 更新软件包和部署java服务
os.system("apt-get update")
os.system("apt-get install -y openjdk-8-jdk")
# 检查java程序是否成功安装
if not any(java_executable in os.listdir("/usr/bin") for java_executable in ["java", "javac"]):
print("Failed to install JDK")
sys.exit(1)
else:
print("Java is already installed")
#设置java环境变量
java_home = subprocess.run(["readlink", "-f", which("java")], stdout=subprocess.PIPE).stdout.decode("utf-8")
java_home = os.path.dirname(os.path.dirname(java_home))
os.environ["JAVA_HOME"] = java_home
#下载kafka安装包
os.system("wget http://mirrors.estointernet.in/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz")
os.system("tar xvzf kafka_2.13-2.6.0.tgz")
# 部署kafka
os.chdir("kafka_2.13-2.6.0")
#检查kafka是否运行,如果没有运行就启动服务
if not any("9092" in port for port in subprocess.run(["lsof", "-i"], stdout=subprocess.PIPE).stdout.decode("utf-8").split("\n")):
subprocess.run(["bin/kafka-server-start.sh", "config/server.properties"])
print("Kafka server started successfully")
else:
print("Kafka server is already running")
# Check if the script is being run as root
if os.geteuid() != 0:
print("This script must be run as root")
sys.exit(1)
deploy_kafka()
在这个脚本中,我们将部署 Kafka 的逻辑封装在了 deploy_kafka 函数中,并在脚本的最后调用了这个函数。
评论区