Skip to content

Commit 34c8997

Browse files
committed
feat(*): allow custom component images
Pull image names for Deis components from etcd, defaulting to the stock Deis component images. This enables users to supply their own router, for instance, simply by setting an etcd key: /deis/{component}/image Also, the Deis release version is now stored in /etc/deis-release. This is by default appended when getting the image names for Deis components, but can be overridden if set in etcd at /deis/release.
1 parent 32fc59f commit 34c8997

9 files changed

Lines changed: 40 additions & 16 deletions

File tree

builder/systemd/deis-builder.service

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ Description=deis-builder
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "docker history deis/builder >/dev/null || docker pull deis/builder:latest"
7+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/builder`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
88
ExecStartPre=/bin/sh -c "docker inspect deis-builder >/dev/null && docker rm -f deis-builder || true"
99
ExecStartPre=/bin/sh -c "docker inspect deis-builder-data >/dev/null 2>&1 || docker run --name deis-builder-data -v /var/lib/docker deis/base true"
10-
ExecStart=/usr/bin/docker run --name deis-builder --rm -p 2223:22 -e PUBLISH=22 -e HOST=${COREOS_PRIVATE_IPV4} -e PORT=2223 --volumes-from deis-builder-data --privileged deis/builder
10+
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/builder` && docker run --name deis-builder --rm -p 2223:22 -e PUBLISH=22 -e HOST=$COREOS_PRIVATE_IPV4 -e PORT=2223 --volumes-from deis-builder-data --privileged $IMAGE"
1111
ExecStartPost=/bin/sh -c "echo 'Waiting for builder on 2223/tcp...' && until cat </dev/null>/dev/tcp/$COREOS_PRIVATE_IPV4/2223; do sleep 1; done"
1212

1313
[Install]

cache/systemd/deis-cache.service

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ Description=deis-cache
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "docker history deis/cache >/dev/null || docker pull deis/cache:latest"
7+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/cache`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
88
ExecStartPre=/bin/sh -c "docker inspect deis-cache >/dev/null && docker rm -f deis-cache || true"
9-
ExecStart=/usr/bin/docker run --name deis-cache --rm -p 6379:6379 -e PUBLISH=6379 -e HOST=${COREOS_PRIVATE_IPV4} deis/cache
9+
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/cache` && docker run --name deis-cache --rm -p 6379:6379 -e PUBLISH=6379 -e HOST=$COREOS_PRIVATE_IPV4 $IMAGE"
1010

1111
[Install]
1212
WantedBy=multi-user.target

contrib/coreos/user-data

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ coreos:
8989
ExecStartPre=/usr/bin/rm /home/core/.bashrc
9090
ExecStart=/usr/bin/ln -s /run/deis/.bashrc /home/core/.bashrc
9191
write_files:
92+
- path: /etc/deis-release
93+
content: |
94+
DEIS_RELEASE=latest
9295
- path: /run/deis/motd
9396
content: " \e[31m* * \e[34m* \e[32m***** \e[39mddddd eeeeeee iiiiiii ssss\n\e[31m* * \e[34m* * \e[32m* * \e[39md d e e i s s\n \e[31m* * \e[34m***** \e[32m***** \e[39md d e i s\n\e[32m***** \e[31m* * \e[34m* \e[39md d e i s\n\e[32m* * \e[31m* * \e[34m* * \e[39md d eee i sss\n\e[32m***** \e[31m* * \e[34m***** \e[39md d e i s\n \e[34m* \e[32m***** \e[31m* * \e[39md d e i s\n \e[34m* * \e[32m* * \e[31m* * \e[39md d e e i s s\n\e[34m***** \e[32m***** \e[31m* * \e[39mddddd eeeeeee iiiiiii ssss\n\n\e[39mWelcome to Deis\t\t\tPowered by Core\e[38;5;45mO\e[38;5;206mS\e[39m\n"
9497
- path: /run/deis/.bashrc
@@ -98,3 +101,25 @@ write_files:
98101
function nse() {
99102
sudo nsenter --pid --uts --mount --ipc --net --target $(docker inspect --format="{{ .State.Pid }}" $1)
100103
}
104+
- path: /run/deis/bin/get_image
105+
permissions: 0755
106+
content: |
107+
#!/bin/bash
108+
# usage: get_image <component_path>
109+
IMAGE=`etcdctl get $1/image`
110+
111+
# if no image was set in etcd, we use the default plus the release string
112+
if [ $? -ne 0 ]; then
113+
RELEASE=`etcdctl get /deis/release`
114+
115+
# if no release was set in etcd, use the default provisioned with the server
116+
if [ $? -ne 0 ]; then
117+
source /etc/deis-release
118+
RELEASE=$DEIS_RELEASE
119+
fi
120+
121+
IMAGE=$1:$RELEASE
122+
fi
123+
124+
# remove leading slash
125+
echo ${IMAGE#/}

controller/systemd/deis-controller.service

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ After=deis-logger.service
66
[Service]
77
EnvironmentFile=/etc/environment
88
TimeoutStartSec=20m
9-
ExecStartPre=/bin/sh -c "docker history deis/controller >/dev/null || docker pull deis/controller:latest"
9+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/controller`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
1010
ExecStartPre=/bin/sh -c "docker inspect deis-controller >/dev/null && docker rm -f deis-controller || true"
11-
ExecStart=/usr/bin/docker run --name deis-controller --rm -p 8000:8000 -e PUBLISH=8000 -e HOST=${COREOS_PRIVATE_IPV4} --volumes-from=deis-logger deis/controller
11+
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/controller` && docker run --name deis-controller --rm -p 8000:8000 -e PUBLISH=8000 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from=deis-logger $IMAGE"
1212

1313
[Install]
1414
WantedBy=multi-user.target

database/systemd/deis-database.service

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ Description=deis-database
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "docker history deis/database >/dev/null || docker pull deis/database:latest"
7+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/database`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
88
ExecStartPre=/bin/sh -c "docker inspect deis-database >/dev/null && docker rm -f deis-database || true"
99
ExecStartPre=/bin/sh -c "docker inspect deis-database-data >/dev/null 2>&1 || docker run --name deis-database-data -v /var/lib/postgresql deis/base true"
10-
ExecStart=/usr/bin/docker run --name deis-database --rm -p 5432:5432 -e PUBLISH=5432 -e HOST=${COREOS_PRIVATE_IPV4} --volumes-from deis-database-data deis/database
10+
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/database` && docker run --name deis-database --rm -p 5432:5432 -e PUBLISH=5432 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from deis-database-data $IMAGE"
1111

1212
[Install]
1313
WantedBy=multi-user.target

docs/contributing/releases.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ github.com/deis/deis Repo
3030
* ``git add CHANGELOG.md && git commit -m "Updated CHANGELOG.md."``
3131
- Merge git master into release branch locally
3232
* ``git checkout release && git merge master``
33-
- Grep the codebase for "docker pull" and replace all instances of ":latest"
34-
with ":vX.Y.Z"
33+
- Edit contrib/coreos/user-data and update ``DEIS_RELEASE`` to ":vX.Y.Z"
3534
- At the Docker Index, create a tagged image build ":vX.Y.Z" for every component
3635
* The UI for this is well-hidden: go to https://index.docker.io/builds/ and
3736
click "Edit".

logger/systemd/deis-logger.service

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ Description=deis-logger
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "docker history deis/logger >/dev/null || docker pull deis/logger:latest"
7+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/logger`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
88
ExecStartPre=/bin/sh -c "docker inspect deis-logger >/dev/null && docker rm -f deis-logger || true"
99
ExecStartPre=/bin/sh -c "docker inspect deis-logger-data >/dev/null 2>&1 || docker run --name deis-logger-data -v /var/log/deis deis/base true"
10-
ExecStart=/usr/bin/docker run --name deis-logger --rm -p 514:514/udp -e PUBLISH=514 -e HOST=${COREOS_PRIVATE_IPV4} --volumes-from deis-logger-data deis/logger
10+
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/logger` && docker run --name deis-logger --rm -p 514:514/udp -e PUBLISH=514 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from deis-logger-data $IMAGE"
1111

1212
[Install]
1313
WantedBy=multi-user.target

registry/systemd/deis-registry.service

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ Description=deis-registry
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "docker history deis/registry >/dev/null || docker pull deis/registry:latest"
7+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/registry`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
88
ExecStartPre=/bin/sh -c "docker inspect deis-registry >/dev/null && docker rm -f deis-registry || true"
99
ExecStartPre=/bin/sh -c "docker inspect deis-registry-data >/dev/null 2>&1 || docker run --name deis-registry-data -v /data deis/base /bin/true"
10-
ExecStart=/usr/bin/docker run --name deis-registry --rm -p 5000:5000 -e PUBLISH=5000 -e HOST=${COREOS_PRIVATE_IPV4} --volumes-from deis-registry-data deis/registry
10+
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/registry` && docker run --name deis-registry --rm -p 5000:5000 -e PUBLISH=5000 -e HOST=$COREOS_PRIVATE_IPV4 --volumes-from deis-registry-data $IMAGE"
1111
ExecStartPost=/bin/sh -c "echo 'Waiting for listener on 5000/tcp...' && until cat </dev/null>/dev/tcp/$COREOS_PRIVATE_IPV4/5000; do sleep 1; done && docker pull deis/slugrunner:latest && docker tag deis/slugrunner $COREOS_PRIVATE_IPV4:5000/deis/slugrunner && docker push $COREOS_PRIVATE_IPV4:5000/deis/slugrunner"
1212

1313
[Install]

router/systemd/deis-router.service

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ Description=deis-router
44
[Service]
55
EnvironmentFile=/etc/environment
66
TimeoutStartSec=20m
7-
ExecStartPre=/bin/sh -c "docker history deis/router >/dev/null || docker pull deis/router:latest"
7+
ExecStartPre=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/router`; docker history $IMAGE >/dev/null || docker pull $IMAGE"
88
ExecStartPre=/bin/sh -c "docker inspect deis-router >/dev/null && docker rm -f deis-router || true"
9-
ExecStart=/usr/bin/docker run --name deis-router --rm -p 80:80 -p 2222:2222 -e PUBLISH=80 -e HOST=${COREOS_PRIVATE_IPV4} deis/router
9+
ExecStart=/bin/sh -c "IMAGE=`/run/deis/bin/get_image /deis/router` && docker run --name deis-router --rm -p 80:80 -p 2222:2222 -e PUBLISH=80 -e HOST=$COREOS_PRIVATE_IPV4 $IMAGE"
1010

1111
[Install]
1212
WantedBy=multi-user.target

0 commit comments

Comments
 (0)