#!/bin/bash # #************************************************************************************** #Author: Noise Lys #QQ: 578110218 #Date: 2021-05-30 #Filename: install_harbor.sh #URL: https://www.cnblogs.com/noise/ #Description: The test script #Copyright (C): 2021 All rights reserved #************************************************************************************** OS_VERSION=`cat /etc/os-release | sed 's/"/=/g' | awk -F[=]+ 'NR==3{print $2}'` COLOR="echo -e \\033[1;31m" END="\033[m" HARBOR_VERSION=1.7.6 IPADDR=`hostname -I|awk '{print $1}'` HARBOR_ADMIN_PASSWORD=123456 IP_CLIENT1=10.0.0.101 IP_CLIENT2=10.0.0.102 IP_CLIENT3=10.0.0.103 # install docker install_docker(){ ${COLOR}"START to install docker"${END} sleep 1 if [[ ${OS_VERSION} = "centos" ]];then COLOR="echo -e \\033[1;31m" END="\033[m" VERSION="19.03.5-3.EL7" rm -rf /etc/yum.repos.d/* wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/repo/Centos-7.repo || { ${COLOR}"BaseOS:Can't access the internet,please check your connection!"${END};exit;} wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/repo/epel-7.repo || { ${COLOR}"Epel:Can't access the internet,please check your connection!"${END};exit;} wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo || { ${COLOR}"Docker-ce:Can't access the internet,please check your connection!"${END};exit;} yum clean all yum -y install docker-ce || { ${COLOR}"Base,Extras yum sources is unavailable, please check yum sources"${END};exit;} mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://u5qp98hs.mirror.aliyuncs.com"] } EOF systemctl enable --now docker docker version && ${COLOR}"Docker install succesfully"${END} || ${COLOR}"Docker install failed"${END} else # ubuntu apt update apt -y install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" apt -y update apt -y install docker-ce systemctl enable --now docker docker version && ${COLOR}"Docker install succesfully"${END} || ${COLOR}"Docker install failed"${END} fi reboot } #install docker-compose install_docker_compose(){ ${COLOR}"START to install docker compose"${END} sleep 1 curl -L https://github.com/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose && ${COLOR}"wget docker compose successfully!"${END} || ${COLOR}"wget docker compose failed!"${END} chmod +x /usr/bin/docker-compose docker-compose --version && ${COLOR}"Docker Compose installed successfully!" ${END} || ${COLOR}"Docker Compose installed failed!" ${END} } #install Harbor install_harbor(){ ${COLOR}"START to install harbor"${END} sleep 1 read -p "please select offline(y) or online(n):" HARBOR_PACKAGES ${COLOR}"deafult download packages from online!"${END} if [[ ${HARBOR_PACKAGES} = "Y"||${HARBOR_PACKAGES} = "y" ]]; then ${COLOR}"when you selected offline, please use rz to save the packages to /data/!"${END} sleep 5 else wget https://github.com/goharbor/harbor/releases/download/v${HARBOR_VERSION}/harbor-offline-installer-v${HARBOR_VERSION}.tgz && ${COLOR}"wget harbor successfully!"${END} || ${COLOR}"wget harbor failed!"${END} fi mkdir /apps tar xvf harbor-offline-installer-v${HARBOR_VERSION}.tgz -C /apps/ sed -i.bak -e 's/^hostname =.*/hostname = '''${IPADDR}'''/' -e 's/^harbor_admin_password =.*/harbor_admin_password = '''${HARBOR_ADMIN_PASSWORD}'''/' /apps/harbor/harbor.cfg if [[ ${OS_VERSION} = "centos" ]];then yum -y install python2 &>/dev/null && ${COLOR}"python installed successfully!"${END} || ${COLOR}"python installed failed!"${END} else apt -y install python &>/dev/null && ${COLOR}"python installed successfully!"${END} || ${COLOR}"python installed failed!"${END} fi ln -s /usr/bin/python2.7 /usr/bin/python &>/dev/null /apps/harbor/install.sh && ${COLOR}"Harbor installed successfully!"${END} || ${COLOR}"Harbor installed failed!"${END} } #install service install_harbor_service(){ 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 sed -i.bk -e 's@^ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock.*@ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry '''${IP_CLIENT1}''' --insecure-registry '''${IP_CLIENT2}''' --insecure-registry '''${IP_CLIENT3}'''@' /lib/systemd/system/docker.service systemctl daemon-reload systemctl enable harbor && ${COLOR}"Harbor service successfully!"${END} || ${COLOR}"Harbor service failed!"${END} reboot } ${COLOR}"========================"${END} ${COLOR}"step 1 : install docker!"${END} ${COLOR}"========================"${END} if [[ ${OS_VERSION} = "centos" ]];then rpm -ql docker-ce &>/dev/null && ${COLOR}"docker already installed!"${END} || install_docker else dpkg -s docker-ce &>/dev/null && ${COLOR}"docker already installed!"${END} || install_docker fi ${COLOR}"========================"${END} ${COLOR}"step 2 : install docker compose!"${END} ${COLOR}"========================"${END} docker-compose --version &>/dev/null && ${COLOR}"docker compose already installed!"${END} || install_docker_compose ${COLOR}"========================"${END} ${COLOR}"step 3 : install harbor!"${END} ${COLOR}"========================"${END} install_harbor ${COLOR}"========================"${END} ${COLOR}"step 4 : install harbor service!"${END} ${COLOR}"========================"${END} install_harbor_service