Skip to content

Commit 6aad59c

Browse files
committed
fix(*): set etcd keys safely in /bin/boot
Each etcd configuration key should be set-if-unset. Previously, we were setting all of these defaults if one directory existed, but it's safer to set each one individually if it is unset.
1 parent 968efd0 commit 6aad59c

4 files changed

Lines changed: 50 additions & 33 deletions

File tree

controller/bin/boot

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,16 @@ done
2424
# wait until etcd has discarded potentially stale values
2525
sleep $(($ETCD_TTL+1))
2626

27-
# seed initial service configuration if necessary
28-
if ! etcdctl --no-sync -C $ETCD ls $ETCD_PATH >/dev/null 2>&1; then
29-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/protocol ${DEIS_PROTOCOL:-http} >/dev/null
30-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/secretKey ${DEIS_SECRET_KEY:-`openssl rand -base64 64 | tr -d '\n'`} >/dev/null
31-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/builderKey ${DEIS_BUILDER_KEY:-`openssl rand -base64 64 | tr -d '\n'`} >/dev/null
32-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/registrationEnabled 1 >/dev/null
33-
fi
27+
function etcd_safe_set {
28+
if ! etcdctl --no-sync -C $ETCD get $ETCD_PATH/$1 >/dev/null 2>&1; then
29+
etcdctl --no-sync -C $ETCD set $ETCD_PATH/$1 $2 >/dev/null
30+
fi
31+
}
32+
33+
etcd_safe_set protocol ${DEIS_PROTOCOL:-http}
34+
etcd_safe_set secretKey ${DEIS_SECRET_KEY:-`openssl rand -base64 64 | tr -d '\n'`}
35+
etcd_safe_set builderKey ${DEIS_BUILDER_KEY:-`openssl rand -base64 64 | tr -d '\n'`}
36+
etcd_safe_set registrationEnabled 1
3437

3538
# wait for confd to run once and install initial templates
3639
until confd -onetime -node $ETCD -config-file /app/confd.toml 2>/dev/null; do

database/bin/boot

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,18 @@ done
3131
# wait until etcd has discarded potentially stale values
3232
sleep $(($ETCD_TTL+1))
3333

34-
# seed initial service configuration if necessary
35-
if ! etcdctl --no-sync -C $ETCD ls $ETCD_PATH >/dev/null 2>&1; then
36-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/engine postgresql_psycopg2 >/dev/null
37-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/adminUser ${PG_ADMIN_USER:-postgres} >/dev/null
38-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/adminPass ${PG_ADMIN_PASS:-changeme123} >/dev/null
39-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/user ${PG_USER_NAME:-deis} >/dev/null
40-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/password ${PG_USER_PASS:-changeme123} >/dev/null
41-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/name ${PG_USER_DB:-deis} >/dev/null
42-
fi
34+
function etcd_safe_set {
35+
if ! etcdctl --no-sync -C $ETCD get $ETCD_PATH/$1 >/dev/null 2>&1; then
36+
etcdctl --no-sync -C $ETCD set $ETCD_PATH/$1 $2 >/dev/null
37+
fi
38+
}
39+
40+
etcd_safe_set engine postgresql_psycopg2
41+
etcd_safe_set adminUser ${PG_ADMIN_USER:-postgres}
42+
etcd_safe_set adminPass ${PG_ADMIN_PASS:-changeme123}
43+
etcd_safe_set user ${PG_USER_NAME:-deis}
44+
etcd_safe_set password ${PG_USER_PASS:-changeme123}
45+
etcd_safe_set name ${PG_USER_DB:-deis}
4346

4447
# wait for confd to run once and install initial templates
4548
until confd -onetime -node $ETCD -config-file /app/confd.toml; do

registry/bin/boot

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,15 @@ done
2727
# wait until etcd has discarded potentially stale values
2828
sleep $(($ETCD_TTL+1))
2929

30+
function etcd_safe_set {
31+
if ! etcdctl --no-sync -C $ETCD get $ETCD_PATH/$1 >/dev/null 2>&1; then
32+
etcdctl --no-sync -C $ETCD set $ETCD_PATH/$1 $2 >/dev/null
33+
fi
34+
}
35+
3036
# seed initial service configuration if necessary
31-
if ! etcdctl --no-sync -C $ETCD ls $ETCD_PATH >/dev/null 2>/dev/null; then
32-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/protocol http >/dev/null
33-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/secretKey ${REGISTRY_SECRET_KEY:-`openssl rand -base64 64 | tr -d '\n'`} >/dev/null
34-
fi
37+
etcd_safe_set protocol http
38+
etcd_safe_set secretKey ${REGISTRY_SECRET_KEY:-`openssl rand -base64 64 | tr -d '\n'`}
3539

3640
# wait for confd to run once and install initial templates
3741
until confd -onetime -node $ETCD -config-file /app/confd.toml; do

router/bin/boot

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,26 @@ done
2424
# wait until etcd has discarded potentially stale values
2525
sleep $(($ETCD_TTL+1))
2626

27-
# seed initial service configuration if necessary
28-
if ! etcdctl --no-sync -C $ETCD ls /deis/services >/dev/null 2>&1; then
29-
etcdctl --no-sync -C $ETCD mkdir /deis/services || true >/dev/null 2>&1
30-
etcdctl --no-sync -C $ETCD mkdir /deis/domains || true >/dev/null 2>&1
31-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/port ${PORT:-80} >/dev/null
32-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/gzip on >/dev/null
33-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/gzipHttpVersion 1.0 >/dev/null
34-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/gzipCompLevel 2 >/dev/null
35-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/gzipProxied any >/dev/null
36-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/gzipVary on >/dev/null
37-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/gzipDisable "\"msie6\"" >/dev/null
38-
etcdctl --no-sync -C $ETCD set $ETCD_PATH/gzipTypes "application/x-javascript, application/xhtml+xml, application/xml, application/xml+rss, application/json, text/css, text/javascript, text/plain, text/xml" >/dev/null
39-
fi
27+
function etcd_safe_mkdir {
28+
etcdctl --no-sync -C $ETCD mkdir $1 || true >/dev/null 2>&1
29+
}
30+
31+
function etcd_safe_set {
32+
if ! etcdctl --no-sync -C $ETCD get $ETCD_PATH/$1 >/dev/null 2>&1; then
33+
etcdctl --no-sync -C $ETCD set $ETCD_PATH/$1 $2 >/dev/null
34+
fi
35+
}
36+
37+
etcd_safe_mkdir /deis/services
38+
etcd_safe_mkdir /deis/domains
39+
etcd_safe_set port ${PORT:-80}
40+
etcd_safe_set gzip on
41+
etcd_safe_set gzipHttpVersion 1.0
42+
etcd_safe_set gzipCompLevel 2
43+
etcd_safe_set gzipProxied any
44+
etcd_safe_set gzipVary on
45+
etcd_safe_set gzipDisable "\"msie6\""
46+
etcd_safe_set gzipTypes "application/x-javascript, application/xhtml+xml, application/xml, application/xml+rss, application/json, text/css, text/javascript, text/plain, text/xml"
4047

4148
# wait for confd to run once and install initial templates
4249
until confd -onetime -node $ETCD -config-file /app/confd.toml >/dev/null 2>/dev/null; do

0 commit comments

Comments
 (0)