Simple deployment script to install habitat container with the app as systemd service.
export ALT=500 # Prefix for all the service names/ports used (apply to habitat/ inner service service)
# cleanup
systemctl stop etcd-$ALT
sleep 3
rm -f /etc/systemd/system/etcd-$ALT.service /etc/default/etcd-$ALT*
rm -rf /srv/etcd-$ALT
# setup
touch /etc/default/etcd-$ALT
cat <<-EOF >/etc/default/etcd-${ALT}
HAB_ETCD={ "etcd-client-end":"${ALT}23", "etcd-server-end":"${ALT}80" }
EOF
mkdir -p /srv/etcd-$ALT/data
cat <<-EOF >/etc/systemd/system/etcd-$ALT.service
[Unit]
Description=VES Etcd
BindsTo=docker.service
After=network.target
After=docker.service
After=oem-cloudinit.service
# Wants=docker-images-update.timer
# Wants=docker-images-update.service
[Service]
Environment="ALT=${ALT}"
EnvironmentFile=/etc/environment
# hab sup secret generate
Environment="HAB_CTL_SECRET=kruhL2oUbwCCn48bDzPEATlPvZABwYs3AC0kwpB1G+JFtP2chlCHIVQA8gzWVPQRwsj6ekp6qVkse4SCmDwDbw=="
# hab ring key generate etcd
# Environment="HAB_RING_KEY=tkiwrVzmNH+afXdgYziOlhfp7irPHT+wAH4SYvzWYxA=%"
Environment="HAB_LICENSE=accept-no-persist"
EnvironmentFile=/etc/default/etcd-${ALT}
RestartSec=3s
TimeoutStopSec=0
Restart=always
TimeoutStartSec=0
EOF
cat <<-'EOF' >>/etc/systemd/system/etcd-$ALT.service
# ExecStartPre=/bin/bash -c "while systemctl is-active --quiet docker-mages-update; do sleep 0.5; done"
ExecStart=/usr/bin/docker run --rm --name etcd-${ALT} --net host --uts=host \
-v /srv/etcd-${ALT}/:/hab/svc/etcd/ \
-p 9631:${ALT}31 \
-p ${ALT}32:${ALT}32 \
-p 9638:${ALT}38 \
-p ${ALT}79:${ALT}79 \
-p ${ALT}80:${ALT}80 \
-e HAB_LICENSE \
-e HAB_CTL_SECRET \
--env-file=/etc/default/etcd-${ALT} \
epcim/etcd --topology leader \
--listen-gossip 0.0.0.0:${ALT}38 --listen-ctl 0.0.0.0:${ALT}32 --listen-http 0.0.0.0:${ALT}31 \
--peer master-0:${ALT}38 --peer master-1:${ALT}38 --peer master-2:${ALT}38
ExecStop=/usr/bin/docker rm -f etcd-ves
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable etcd-$ALT
systemctl start etcd-$ALT
journalctl -fu etcd-$ALT