一键安装 harbor 脚本(https)-centos7

一键安装 harbor 脚本(https)-centos7

此脚本基于 centos7 安装,具体需要根据实际情况进行测试调整

#!/bin/bash
#Description: Install harbor on centos7
#Author: xan_yum

WORK_DIR=$(cd $(dirname $0) && pwd)
COLOR="echo -e \e[1;31m"
END="\e[0m"
DOCKER_VERSION="-19.03.15-3.el7"
HARBOR_VERSION=2.6.0
COMPOSE_VERSION=2.11.1
DOMAIN=harbor.waluna.top
IPADDR=`hostname -I|awk '{print $1}'`
HARBOR_ADMIN_PASSWORD=waluna

. /etc/rc.d/init.d/functions

install_docker(){
    
    
cd ${WORK_DIR}
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo || {
    
     ${COLOR}"Please check network!"${END};exit; }

yum clean all &> /dev/null
yum install docker-ce${DOCKER_VERSION} docker-ce-cli${DOCKER_VERSION} -y &> /dev/null \
|| {
    
     ${COLOR}"Base,Extras yum is fail,Please check yum"${END};exit; }

mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://eph8xfli.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl enable --now docker &> /dev/null
docker version && ${COLOR}"Docker install completion"${END} || ${COLOR}"Docker install failure"${END}
}

install_docker_compose(){
    
    
cd ${WORK_DIR}
${COLOR}"Begin install docker compose..."${END}
sleep 1

curl -L https://github.com/docker/compose/releases/download/v${COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

docker-compose version && ${COLOR}"Docker compose install completion"${END} || ${COLOR}"Docker compose install failure"${END}
}

make_ca(){
    
    
cd ${WORK_DIR}
mkdir -p /apps/harbor/certs
cd /apps/harbor/certs
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 36500 \
 -subj "/C=CN/ST=Shandong/L=Laiwu/O=example/OU=Personal/CN=${DOMAIN}" \
 -key ca.key \
 -out ca.crt
openssl genrsa -out ${DOMAIN}.key 4096
openssl req -sha512 -new \
    -subj "/C=CN/ST=Shandong/L=Laiwu/O=example/OU=Personal/CN=${DOMAIN}" \
    -key ${DOMAIN}.key \
    -out ${DOMAIN}.csr
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=${DOMAIN}
DNS.2=*.`echo ${
      
      DOMAIN}|cut -d. -f2,3`
DNS.3=$(hostname)
IP.1=127.0.0.1
IP.2=${IPADDR}
EOF
openssl x509 -req -sha512 -days 36500 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in ${DOMAIN}.csr \
    -out ${DOMAIN}.crt
#cp ${DOMAIN}.crt /data/cert/
#cp ${DOMAIN}.key /data/cert/
openssl x509 -inform PEM -in ${DOMAIN}.crt -out ${DOMAIN}.cert
#cp ${DOMAIN}.cert /etc/docker/certs.d/${DOMAIN}/
#cp ${DOMAIN}.key /etc/docker/certs.d/${DOMAIN}/
#cp ca.crt /etc/docker/certs.d/${DOMAIN}/
#systemctl restart docker
}

install_harbor(){
    
    
cd ${WORK_DIR}
${COLOR}"Begin install harbor..."${END}
sleep 1

wget https://storage.googleapis.com/harbor-releases/release-${HARBOR_VERSION}/harbor-offline-installer-v${HARBOR_VERSION}.tgz
mkdir -pv /apps
tar xvf harbor-offline-installer-v${HARBOR_VERSION}.tgz -C /apps
cd /apps/harbor/
cp /apps/harbor/harbor.yml.tmpl /apps/harbor/harbor.yml
sed -i.bak -e 's/^hostname: .*/hostname: '''${IPADDR}'''/' \
 -e 's/^harbor_admin_password: .*/harbor_admin_password: '''${HARBOR_ADMIN_PASSWORD}'''/' \
 -e 's#/your/certificate/path#/apps/harbor/certs/'''${DOMAIN}'''.crt#' \
 -e 's#/your/private/key/path#/apps/harbor/certs/'''${DOMAIN}'''.key#' /apps/harbor/harbor.yml

/apps/harbor/install.sh && ${COLOR}"Harbor install completion"${END} || ${COLOR}"Harbor install failure"${END}
}

harbor_service(){
    
    
cd ${WORK_DIR}
cat > /lib/systemd/system/harbor.service <<EOF
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor

[Service]
Type=simple
Restart=on-failure
RestartSec=5
ExecStart=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml up
ExecStop=/usr/bin/docker-compose -f /apps/harbor/docker-compose.yml down

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable harbor.service && ${COLOR}"Harbor already set boot up"${END}
}

rpm -q docker-ce &> /dev/null && action "Docker already install" || install_docker

docker-compose version &> /dev/null && ${COLOR}"Docker compose already install"${END} || install_docker_compose

make_ca

install_harbor

harbor_service

原文链接: 一键安装 harbor 脚本(https)-centos7.

猜你喜欢

转载自blog.csdn.net/qq_45520116/article/details/127944428