-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
151 lines (118 loc) · 3.55 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#!/bin/bash
# 检查是否以root用户执行
if [ "$EUID" -ne 0 ]; then
echo "Error: This script must be run as root."
exit 1
fi
# 检查是否安装了 Docker
if ! command -v docker &> /dev/null; then
echo "Docker is not installed. Please install Docker and try again."
exit 1
fi
# 设置服务名称和描述
SERVICE_NAME="harbor"
SERVICE_DESCRIPTION="Harbor"
# 获取系统架构
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ]; then
HARBOR_FILE="harbor_linux_amd64"
elif [ "$ARCH" = "aarch64" ]; then
HARBOR_FILE="harbor_linux_arm64"
else
echo "Unsupported architecture: $ARCH"
exit 1
fi
# 设置可执行文件的下载 URL 和版本
HARBOR_VERSION=$(curl -sL https://api.github.com/repos/skye-z/harbor/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
if [ -z "$HARBOR_VERSION" ]; then
echo "Failed to retrieve the latest Harbor version."
exit 1
fi
HARBOR_DOWNLOAD_URL="https://github.com/skye-z/harbor/releases/download/${HARBOR_VERSION}/${HARBOR_FILE}"
# 设置工作目录
WORKING_DIRECTORY="/opt/harbor"
# 创建 Systemd 服务单元文件
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
cat <<EOF > $SERVICE_FILE
[Unit]
Description=${SERVICE_DESCRIPTION}
After=docker.service
[Service]
ExecStart=${WORKING_DIRECTORY}/harbor >> /var/log/harbor.log 2>&1
WorkingDirectory=${WORKING_DIRECTORY}
Restart=always
[Install]
WantedBy=multi-user.target
EOF
install_harbor_online() {
# 创建工作目录
mkdir -p $WORKING_DIRECTORY
# 下载 Harbor 可执行文件
curl -LJ $HARBOR_DOWNLOAD_URL -o ${WORKING_DIRECTORY}/harbor
# 赋予可执行权限
chmod +x ${WORKING_DIRECTORY}/harbor
# 重载 Systemd 配置
systemctl daemon-reload
# 启动服务
systemctl start $SERVICE_NAME
echo "Harbor service installed successfully!"
}
install_harbor_offline() {
# 检查是否存在离线安装文件
if [ -f $HARBOR_FILE ]; then
# 创建工作目录
mkdir -p $WORKING_DIRECTORY
# 复制离线安装文件到工作目录
cp ${HARBOR_FILE} ${WORKING_DIRECTORY}/harbor
# 赋予可执行权限
chmod +x ${WORKING_DIRECTORY}/harbor
# 重载 Systemd 配置
systemctl daemon-reload
# 启动服务
systemctl start $SERVICE_NAME
echo "Harbor service installed successfully!"
else
echo "Error: Offline installation file '$HARBOR_FILE' not found. Please download it manually to the current directory."
exit 1
fi
}
uninstall_harbor() {
# 停止服务
systemctl stop $SERVICE_NAME
# 禁用开机自启
systemctl disable $SERVICE_NAME
# 删除工作目录
rm -rf $WORKING_DIRECTORY
# 删除 Systemd 服务文件
rm -f $SERVICE_FILE
# 重载 Systemd 配置
systemctl daemon-reload
echo "Harbor service uninstalled successfully!"
}
enable_autostart() {
# 启用开机自启
systemctl enable $SERVICE_NAME
echo "Autostart enabled for Harbor service!"
}
disable_autostart() {
# 禁用开机自启
systemctl disable $SERVICE_NAME
echo "Autostart disabled for Harbor service!"
}
# 显示选项
echo "Select an option:"
echo "1. Install Harbor (Online)"
echo "2. Install Harbor (Offline)"
echo "3. Uninstall Harbor"
echo "4. Enable Autostart"
echo "5. Disable Autostart"
read -p "Enter option number: " option
# 根据选项执行相应操作
case $option in
1) install_harbor_online ;;
2) install_harbor_offline ;;
3) uninstall_harbor ;;
4) enable_autostart ;;
5) disable_autostart ;;
*) echo "Invalid option" ;;
esac