harbor/make/install.sh

112 lines
2.6 KiB
Bash
Raw Normal View History

2016-10-19 08:32:00 +02:00
#!/bin/bash
set -e
set +o noglob
DIR="$(cd "$(dirname "$0")" && pwd)"
source $DIR/common.sh
usage=$'Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
Please set --with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.yml bacause notary must run under https.
Please set --with-clair if needs enable Clair in Harbor
Please set --with-chartmuseum if needs enable Chartmuseum in Harbor'
2016-10-19 08:32:00 +02:00
item=0
2017-03-09 12:02:44 +01:00
# notary is not enabled by default
with_notary=$false
2017-06-13 11:13:24 +02:00
# clair is not enabled by default
with_clair=$false
# chartmuseum is not enabled by default
with_chartmuseum=$false
2016-10-19 08:32:00 +02:00
while [ $# -gt 0 ]; do
case $1 in
--help)
note "$usage"
exit 0;;
2017-03-09 12:02:44 +01:00
--with-notary)
2017-06-13 11:13:24 +02:00
with_notary=true;;
--with-clair)
with_clair=true;;
--with-chartmuseum)
with_chartmuseum=true;;
2016-10-19 08:32:00 +02:00
*)
note "$usage"
exit 1;;
esac
shift || true
done
workdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
cd $workdir
# The hostname in harbor.yml has not been modified
if grep '^[[:blank:]]*hostname: reg.mydomain.com' &> /dev/null harbor.yml
2016-10-19 08:32:00 +02:00
then
warn "$usage"
exit 1
fi
h2 "[Step $item]: checking installation environment ..."; let item+=1
check_docker
check_dockercompose
2017-04-05 08:48:29 +02:00
if [ -f harbor*.tar.gz ]
2016-10-19 08:32:00 +02:00
then
h2 "[Step $item]: loading Harbor images ..."; let item+=1
2017-04-05 08:48:29 +02:00
docker load -i ./harbor*.tar.gz
2016-10-19 08:32:00 +02:00
fi
echo ""
h2 "[Step $item]: preparing environment ..."; let item+=1
if [ -n "$host" ]
then
sed "s/^hostname: .*/hostname: $host/g" -i ./harbor.yml
2016-10-19 08:32:00 +02:00
fi
2017-06-13 11:13:24 +02:00
prepare_para=
if [ $with_notary ]
2017-03-09 12:02:44 +01:00
then
2017-06-13 11:13:24 +02:00
prepare_para="${prepare_para} --with-notary"
2017-03-09 12:02:44 +01:00
fi
if [ $with_clair ]
2017-06-13 11:13:24 +02:00
then
prepare_para="${prepare_para} --with-clair"
fi
if [ $with_chartmuseum ]
then
prepare_para="${prepare_para} --with-chartmuseum"
fi
2017-06-13 11:13:24 +02:00
./prepare $prepare_para
2016-10-19 08:32:00 +02:00
echo ""
if [ -n "$(docker-compose ps -q)" ]
2017-03-09 12:02:44 +01:00
then
2017-06-13 11:13:24 +02:00
note "stopping existing Harbor instance ..."
docker-compose down -v
2017-03-09 12:02:44 +01:00
fi
2017-06-13 11:13:24 +02:00
echo ""
h2 "[Step $item]: starting Harbor ..."
docker-compose up -d
2016-10-19 08:32:00 +02:00
protocol=http
hostname=reg.mydomain.com
if [ -n "$(grep '^[^#]*https:' ./harbor.yml)" ]
2016-10-19 08:32:00 +02:00
then
protocol=https
2016-10-19 08:32:00 +02:00
fi
if [[ $(grep '^[[:blank:]]*hostname:' ./harbor.yml) =~ hostname:[[:blank:]]*(.*) ]]
2016-10-19 08:32:00 +02:00
then
hostname=${BASH_REMATCH[1]}
fi
echo ""
success $"----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at ${protocol}://${hostname}.
For more details, please visit https://github.com/goharbor/harbor .
2016-10-19 08:32:00 +02:00
"