11#cloud-config
22---
33coreos:
4- etcd:
5- # generate a new token for each unique cluster from https://discovery.etcd.io/new
6- # uncomment the following line and replace it with your discovery URL
7- # discovery: https://discovery.etcd.io/12345693838asdfasfadf13939923
8- addr: $private_ipv4:4001
9- peer-addr: $private_ipv4:7001
10- # give etcd more time if it's under heavy load - prevent leader election thrashing
11- peer-election-timeout: 2000
12- # heartbeat interval should ideally be 1/4 or 1/5 of peer election timeout
13- peer-heartbeat-interval: 500
144 fleet:
155 # We have to set the public_ip here so this works on Vagrant -- otherwise, Vagrant VMs
166 # will all publish the same private IP. This is harmless for cloud providers.
@@ -19,7 +9,41 @@ coreos:
199 etcd_request_timeout: 3.0
2010 units:
2111 - name: etcd.service
12+ mask: true
13+ - name: etcd2.service
2214 command: start
15+ content: |
16+ [Unit]
17+ Description=etcd2 container
18+ Requires=early-docker.service
19+ After=early-docker.service
20+ Before=early-docker.target
21+
22+ [Service]
23+ User=etcd
24+ PermissionsStartOnly=true
25+ Restart=always
26+ RestartSec=10s
27+ EnvironmentFile=/etc/environment
28+ Environment="ETCD_IMAGE=quay.io/coreos/etcd:v2.0.13"
29+ Environment="DOCKER_HOST=unix:///var/run/early-docker.sock"
30+ LimitNOFILE=40000
31+ ExecStartPre=/bin/sh -c "docker history $ETCD_IMAGE >/dev/null 2>&1 || docker pull $ETCD_IMAGE"
32+ ExecStartPre=/bin/sh -c "docker inspect etcd2 >/dev/null 2>&1 && docker rm -f etcd2 || true"
33+ ExecStart=/usr/bin/docker run --net=host --rm \
34+ --volume=/var/lib/etcd2:/var/lib/etcd2 \
35+ --volume=/usr/share/ca-certificates:/etc/ssl/certs:ro \
36+ -p 4001:4001 -p 2380:2380 -p 2379:2379 -p 7001:7001 \
37+ --name etcd2 \
38+ ${ETCD_IMAGE} \
39+ -name %m \
40+ -data-dir /var/lib/etcd2 \
41+ -advertise-client-urls http://${COREOS_PRIVATE_IPV4}:2379,http://${COREOS_PRIVATE_IPV4}:4001 \
42+ -listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \
43+ -initial-advertise-peer-urls http://${COREOS_PRIVATE_IPV4}:2380,http://${COREOS_PRIVATE_IPV4}:7001 \
44+ -listen-peer-urls http://0.0.0.0:2380,http://0.0.0.0:7001 \
45+ --discovery #DISCOVERY_URL
46+ ExecStop=-/usr/bin/docker stop etcd2
2347 - name: docker-tcp.socket
2448 command: start
2549 enable: true
@@ -48,8 +72,8 @@ coreos:
4872 [Unit]
4973 Description=Clean up
5074 DefaultDependencies=no
51- After=fleet.service etcd .service docker.service docker.socket deis-store-admin.service deis-store-daemon.service deis-store-volume.service deis-store-monitor.service
52- Requires=fleet.service etcd .service deis-store-admin.service deis-store-daemon.service deis-store-volume.service docker.service docker.socket deis-store-monitor.service
75+ After=fleet.service etcd2 .service docker.service docker.socket deis-store-admin.service deis-store-daemon.service deis-store-volume.service deis-store-monitor.service
76+ Requires=fleet.service etcd2 .service deis-store-admin.service deis-store-daemon.service deis-store-volume.service docker.service docker.socket deis-store-monitor.service
5377
5478 [Install]
5579 WantedBy=shutdown.target halt.target reboot.target
0 commit comments