#cloud-config coreos: units: - name: etcd.service mask: true - name: etcd2.service command: start - name: docker.service command: start - name: swarm-agent.service content: | [Unit] Description=swarm agent Requires=docker.service After=docker.service [Service] EnvironmentFile=/etc/environment TimeoutStartSec=20m ExecStartPre=/usr/bin/docker pull swarm:latest ExecStartPre=-/usr/bin/docker rm -f swarm-agent ExecStart=/bin/sh -c "/usr/bin/docker run --rm --name swarm-agent swarm:latest join --addr=$COREOS_PRIVATE_IPV4:2376 etcd://$COREOS_PRIVATE_IPV4:2379/docker" ExecStop=/usr/bin/docker stop swarm-agent - name: swarm-manager.service content: | [Unit] Description=swarm manager Requires=docker.service After=docker.service [Service] EnvironmentFile=/etc/environment TimeoutStartSec=20m ExecStartPre=/usr/bin/docker pull swarm:latest ExecStartPre=-/usr/bin/docker rm -f swarm-manager ExecStart=/bin/sh -c "/usr/bin/docker run --rm --name swarm-manager -v /etc/docker/ssl:/etc/docker/ssl --net=host swarm:latest manage --tlsverify --tlscacert=/etc/docker/ssl/ca.pem --tlscert=/etc/docker/ssl/cert.pem --tlskey=/etc/docker/ssl/key.pem etcd://$COREOS_PRIVATE_IPV4:2379/docker" ExecStop=/usr/bin/docker stop swarm-manager etcd2: discovery: {{ lookup('file', '/tmp/'+env+'/discovery_url') }} advertise-client-urls: http://$private_ipv4:2379 initial-advertise-peer-urls: http://$private_ipv4:2380 listen-client-urls: http://0.0.0.0:2379 listen-peer-urls: http://$private_ipv4:2380 data-dir: /var/lib/etcd2 initial-cluster-token: openstackinterop update: reboot-strategy: "off"