mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.0 KiB
109 lines
2.0 KiB
#!/bin/bash |
|
|
|
if [ "$EUID" -ne 0 ] |
|
then echo "Please run as root" |
|
exit |
|
fi |
|
|
|
function usage { |
|
cat << EOF >> /dev/stderr |
|
Usage: sudo ./standup.sh [create|destroy] [etcd] |
|
|
|
This is a script for standing up test databases. It uses systemd to daemonize |
|
rkt containers running on a local loopback IP. |
|
|
|
The general workflow is to create a daemonized container, use the output to set |
|
the test environment variables, run the tests, then destroy the container. |
|
|
|
sudo ./standup.sh create etcd |
|
# Copy environment variables and run tests. |
|
go test -v -i # always install test dependencies |
|
go test -v |
|
sudo ./standup.sh destroy etcd |
|
|
|
EOF |
|
exit 2 |
|
} |
|
|
|
function main { |
|
if [ "$#" -ne 2 ]; then |
|
usage |
|
exit 2 |
|
fi |
|
|
|
case "$1" in |
|
"create") |
|
case "$2" in |
|
"etcd") |
|
create_etcd;; |
|
*) |
|
usage |
|
exit 2 |
|
;; |
|
esac |
|
;; |
|
"destroy") |
|
case "$2" in |
|
"etcd") |
|
destroy_etcd;; |
|
*) |
|
usage |
|
exit 2 |
|
;; |
|
esac |
|
;; |
|
*) |
|
usage |
|
exit 2 |
|
;; |
|
esac |
|
} |
|
|
|
function wait_for_file { |
|
while [ ! -f $1 ]; do |
|
sleep 1 |
|
done |
|
} |
|
|
|
function wait_for_container { |
|
while [ -z "$( rkt list --full | grep $1 | grep running )" ]; do |
|
sleep 1 |
|
done |
|
} |
|
|
|
function create_etcd { |
|
UUID_FILE=/tmp/dex-etcd-uuid |
|
if [ -f $UUID_FILE ]; then |
|
echo "etcd database already exists, try ./standup.sh destroy etcd" |
|
exit 2 |
|
fi |
|
|
|
echo "Starting etcd . To view progress run:" |
|
echo "" |
|
echo " journalctl -fu dex-etcd" |
|
echo "" |
|
UNIFIED_CGROUP_HIERARCHY=no \ |
|
systemd-run --unit=dex-etcd \ |
|
rkt run --uuid-file-save=$UUID_FILE --insecure-options=image \ |
|
--net=host \ |
|
docker://quay.io/coreos/etcd:v3.2.9 |
|
|
|
wait_for_file $UUID_FILE |
|
|
|
UUID=$( cat $UUID_FILE ) |
|
wait_for_container $UUID |
|
echo "To run tests export the following environment variables:" |
|
echo "" |
|
echo " export DEX_ETCD_ENDPOINTS=http://localhost:2379" |
|
echo "" |
|
} |
|
|
|
function destroy_etcd { |
|
UUID_FILE=/tmp/dex-etcd-uuid |
|
systemctl stop dex-etcd |
|
rkt rm --uuid-file=$UUID_FILE |
|
rm $UUID_FILE |
|
} |
|
|
|
|
|
main $@
|
|
|