@@ -31,6 +31,10 @@ cleanup(){
3131 sudo rm -r " /opt/openziti/etc/${ETC} "
3232 fi
3333 )|| true
34+ if [[ -s /opt/openziti/etc/${ETC} /bootstrap.env ]]
35+ then
36+ rm -f /opt/openziti/etc/${ETC} /bootstrap.env
37+ fi
3438 done
3539 if [[ -d " ${ZITI_CONSOLE_LOCATION} " ]]
3640 then
@@ -62,32 +66,38 @@ BASEDIR="$(cd "$(dirname "${0}")" && pwd)"
6266REPOROOT=" $( cd " ${BASEDIR} /../../.." && pwd) "
6367cd " ${REPOROOT} "
6468
65- declare -a BINS=(grep go nc nfpm curl unzip)
69+ declare -a BINS=(grep go nc docker curl unzip)
6670for BIN in " ${BINS[@]} " ; do
6771 checkCommand " $BIN "
6872done
6973
7074: " ${I_AM_ROBOT:= 0} "
7175: " ${ZITI_GO_VERSION:= $(grep -E ' ^go \d+\.\d*' " ./go.mod" | cut -d " " -f2)} "
76+ : " ${ZITI_USER:= admin} "
7277: " ${ZITI_PWD:= ziggypw} "
7378: " ${TMPDIR:= $(mktemp -d)} "
7479: " ${ZITI_CTRL_ADVERTISED_ADDRESS:= " ctrl1.127.0.0.1.sslip.io" } "
7580: " ${ZITI_CTRL_ADVERTISED_PORT:= " 12801" } "
7681: " ${ZITI_ROUTER_PORT:= " 30223" } "
77- : " ${ZITI_ROUTER_NAME:= " linux- router1" } "
82+ : " ${ZITI_ROUTER_NAME:= " router1" } "
7883: " ${ZITI_ROUTER_ADVERTISED_ADDRESS:= " ${ZITI_ROUTER_NAME} .127.0.0.1.sslip.io" } "
7984: " ${ZITI_ENROLL_TOKEN:= " ${TMPDIR} /${ZITI_ROUTER_NAME} .jwt" } "
8085: " ${ZITI_CONSOLE_LOCATION:= " /opt/openziti/share/consoletest" } "
86+ # default is amd64 image manifest matching .github/actions/nfpm/action.yml
87+ : " ${NFPM_VERSION:= docker.io/ goreleaser/ nfpm: v2.42.0@ sha256: 31c856f5806306ba105111fec19e8679222c67c43ad09921a46f9400d99bbbb1} "
8188
8289export \
8390ZITI_GO_VERSION \
91+ ZITI_USER \
8492ZITI_PWD \
8593ZITI_CTRL_ADVERTISED_ADDRESS \
8694ZITI_CTRL_ADVERTISED_PORT \
95+ ZITI_CONSOLE_LOCATION \
8796ZITI_ROUTER_PORT \
8897ZITI_ROUTER_NAME \
8998ZITI_ROUTER_ADVERTISED_ADDRESS \
90- ZITI_ENROLL_TOKEN
99+ ZITI_ENROLL_TOKEN \
100+ DEBUG=1 \
91101
92102cleanup
93103
@@ -100,30 +110,37 @@ done
100110mkdir -p ./release
101111go build -o ./release/ ./...
102112
113+ docker_nfpm (){
114+ docker run --rm \
115+ --user " ${UID:- 0} " \
116+ --volume " ${TMPDIR} " :/mnt/packages \
117+ --volume ./dist:/mnt/dist \
118+ --volume ./release:/mnt/release \
119+ --workdir /mnt \
120+ --env ZITI_VENDOR \
121+ --env ZITI_MAINTAINER \
122+ --env ZITI_HOMEPAGE \
123+ --env MINIMUM_SYSTEMD_VERSION \
124+ " ${NFPM_VERSION} " \
125+ " ${@ } "
126+ }
127+
103128for PKG in openziti{,-controller,-router}
104129do
105130 ZITI_HOMEPAGE=" https://openziti.io" \
106131 ZITI_VENDOR=" netfoundry" \
107132 ZITI_MAINTAINER=
" Maintainers <[email protected] >" \
108133 MINIMUM_SYSTEMD_VERSION=" 232" \
109- nfpm pkg \
134+ docker_nfpm pkg \
110135 --packager deb \
111- --target " $TMPDIR " \
136+ --target ./packages \
112137 --config " ./dist/dist-packages/linux/nfpm-${PKG} .yaml"
113138done
114139
115140sudo dpkg --install " ${TMPDIR} /openziti_" * .deb
116141sudo dpkg --install " ${TMPDIR} /openziti-" {controller,router}_* .deb
117142
118- DEBUG=1 \
119- ZITI_ENROLL_TOKEN=/tmp/${ZITI_ROUTER_NAME} .jwt \
120- sudo /opt/openziti/etc/controller/bootstrap.bash << CTRL
121- ZITI_CTRL_ADVERTISED_ADDRESS="${ZITI_CTRL_ADVERTISED_ADDRESS} "
122- ZITI_CTRL_ADVERTISED_PORT="${ZITI_CTRL_ADVERTISED_PORT} "
123- ZITI_CONSOLE_LOCATION="${ZITI_CONSOLE_LOCATION} "
124- ZITI_USER="admin"
125- ZITI_PWD="${ZITI_PWD} "
126- CTRL
143+ sudo -E bash -x /opt/openziti/etc/controller/bootstrap.bash
127144
128145sudo systemctl start ziti-controller.service
129146sudo systemd-run \
@@ -133,48 +150,66 @@ sudo systemd-run \
133150systemctl is-active ziti-controller.service
134151
135152# shellcheck disable=SC2140
136- login_cmd=" ziti edge login ${ZITI_CTRL_ADVERTISED_ADDRESS} :${ZITI_CTRL_ADVERTISED_PORT} " \
137- " --yes" \
138- " --username admin" \
139- " --password ${ZITI_PWD} "
140- ATTEMPTS=10
153+ zitiLogin (){
154+ ziti edge login " ${ZITI_CTRL_ADVERTISED_ADDRESS} :${ZITI_CTRL_ADVERTISED_PORT} " \
155+ --yes \
156+ --username " ${ZITI_USER} " \
157+ --password " ${ZITI_PWD} "
158+ }
159+ ATTEMPTS=9
141160DELAY=3
142- until ! (( ATTEMPTS)) || ${login_cmd}
161+ until ! (( -- ATTEMPTS )) || zitiLogin
143162do
144- (( ATTEMPTS-- ))
145163 echo " Waiting for controller login"
146164 sleep ${DELAY}
147165done
148- ziti edge create edge-router " ${ZITI_ROUTER_NAME} " -to " ${ZITI_ENROLL_TOKEN} "
166+ if ! (( ATTEMPTS )) ; then
167+ echo " ERROR: timeout waiting for controller login" >&2
168+ exit 1
169+ fi
170+
171+ zitiRouter () {
172+ ziti edge create edge-router " ${ZITI_ROUTER_NAME} " -to " ${ZITI_ENROLL_TOKEN} "
173+ }
149174
150- # fetch and install ziti console
175+ ATTEMPTS=9
176+ DELAY=3
177+ until ! (( -- ATTEMPTS )) || zitiRouter
178+ do
179+ echo " Waiting for router creation"
180+ sleep ${DELAY}
181+
182+ done
183+ if ! (( ATTEMPTS )) ; then
184+ echo " ERROR: timeout waiting for router creation" >&2
185+ exit 1
186+ fi
187+
188+ # mock ziti console html
151189sudo mkdir -p " ${ZITI_CONSOLE_LOCATION} "
152190sudo tee " ${ZITI_CONSOLE_LOCATION} /index.html" <<< " I am ZAC"
153191sudo chmod -R +rX " ${ZITI_CONSOLE_LOCATION} "
154192
155- sudo /opt/openziti/etc/router/bootstrap.bash << ROUTER
156- ZITI_CTRL_ADVERTISED_ADDRESS="${ZITI_CTRL_ADVERTISED_ADDRESS} "
157- ZITI_CTRL_ADVERTISED_PORT="${ZITI_CTRL_ADVERTISED_PORT} "
158- ZITI_ROUTER_ADVERTISED_ADDRESS="${ZITI_ROUTER_ADVERTISED_ADDRESS} "
159- ZITI_ROUTER_PORT="${ZITI_ROUTER_PORT} "
160- ZITI_ENROLL_TOKEN="${ZITI_ENROLL_TOKEN} "
161- ROUTER
193+ sudo -E bash -x /opt/openziti/etc/router/bootstrap.bash
194+
162195sudo systemctl start ziti-router.service
163196sudo systemd-run \
164197--wait --quiet \
165198--service-type=oneshot \
166199--property=TimeoutStartSec=20s \
167200systemctl is-active ziti-router.service
168201
169- ATTEMPTS=10
202+ isOnline (){
203+ ziti edge list edge-routers -j | jq ' .data[0].isOnline'
204+ }
205+ ATTEMPTS=9
170206DELAY=3
171- until ! (( ATTEMPTS)) || [[ $( ziti edge list edge-routers -j | jq ' .data[0]. isOnline' ) == " true" ]]
207+ until ! (( -- ATTEMPTS )) || [[ " $( isOnline) " == " true" ]]
172208do
173- (( ATTEMPTS-- ))
174209 echo " INFO: waiting for router to be online"
175210 sleep ${DELAY}
176211done
177- if [[ $( ziti edge list edge-routers -j | jq ' .data[0]. isOnline' ) == " true" ]]
212+ if [[ " $( isOnline) " == " true" ]]
178213then
179214 echo " INFO: router is online"
180215else
@@ -199,12 +234,19 @@ ATTEMPTS=5
199234DELAY=3
200235
201236# verify console is available
202- curl_cmd=" curl -skSfw '%{http_code}\t%{url}\n' -o/dev/null \" https://${ZITI_CTRL_ADVERTISED_ADDRESS} :${ZITI_CTRL_ADVERTISED_PORT} /zac/\" "
203- until ! (( ATTEMPTS-- )) || eval " ${curl_cmd} " & > /dev/null
237+ getZac (){
238+ curl -kfw ' %{http_code}\t%{url}\n' -o/dev/null \
239+ " https://${ZITI_CTRL_ADVERTISED_ADDRESS} :${ZITI_CTRL_ADVERTISED_PORT} /zac/"
240+ }
241+
242+ until ! (( -- ATTEMPTS )) || getZac & > /dev/null
204243do
205244 echo " Waiting for zac"
206245 sleep ${DELAY}
207246done
208- eval " ${curl_cmd} "
247+ if ! (( ATTEMPTS )) ; then
248+ echo " ERROR: timeout waiting for zac" >&2
249+ exit 1
250+ fi
209251
210252cleanup
0 commit comments