#cloud-config coreos: etcd: # name: M4_ETCD_NAME discovery: https://discovery.etcd.io/57ad4204c6bc25fadc67d49bf26a21aa addr: $public_ipv4:4001 peer-addr: $private_ipv4:7001 # https://coreos.com/docs/cluster-management/debugging/etcd-tuning/ peer-heartbeat-interval: 100 peer-election-timeout: 500 fleet: public-ip: $public_ipv4 metadata: "ID=3" update: reboot-strategy: best-effort group: alpha units: - name: etcd.service command: start - name: fleet.service command: start - name: docker-tcp.socket command: start enable: true content: | [Unit] Description=Docker Socket for the API [Socket] ListenStream=2375 Service=docker.service BindIPv6Only=both [Install] WantedBy=sockets.target #include(`logstash.m4') - name: elasticsearch-data@3.service command: start enable: true content: | [Unit] Description=Elasticsearch Data Volume After=docker.service Requires=docker.service Before=elasticsearch@%i.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c "docker inspect %p-%i >/dev/null 2>&1 || docker run --name %p-%i -v /var/lib/elasticsearch busybox chmod -R 0777 /var/lib/elasticsearch" - name: elasticsearch-discovery@3.service command: start enable: true content: | [Unit] Description=Elasticsearch Discovery Service After=etcd.service Requires=etcd.service Before=elasticsearch@%i.service BindsTo=elasticsearch@%i.service [Service] EnvironmentFile=/etc/environment ExecStart=/bin/bash -c '\ while true; do \ etcdctl set /services/elasticsearch/${COREOS_PRIVATE_IPV4} \'{"http_port": 9200, "transport_port": 9300}\' --ttl 60; \ sleep 45; \ done' ExecStop=/usr/bin/etcdctl rm /services/elasticsearch/${COREOS_PRIVATE_IPV4} - name: elasticsearch@3.service command: start enable: true content: | [Unit] Description=Elasticsearch Service Documentation=http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index.html After=docker.service Requires=docker.service After=elasticsearch-data@%i.service Requires=elasticsearch-data@%i.service After=elasticsearch-discovery@%i.service Requires=elasticsearch-discovery@%i.service [Service] TimeoutSec=0 Restart=always RestartSec=1m EnvironmentFile=/etc/environment SuccessExitStatus=255 ExecStartPre=-/usr/bin/docker kill %p-%i ExecStartPre=-/usr/bin/docker rm %p-%i ExecStartPre=/usr/bin/docker pull digitalwonderland/elasticsearch ExecStart=/bin/bash -c '\ curl -f ${COREOS_PRIVATE_IPV4}:4001/v2/keys/services/elasticsearch; \ if [ "$?" = "0" ]; then \ UNICAST_HOSTS=$(etcdctl ls --recursive /services/elasticsearch \ | sed "s/\/services\/elasticsearch\///g" \ | sed "s/$/:9300/" \ | paste -s -d","); \ else \ UNICAST_HOSTS=""; \ fi; \ /usr/bin/docker run \ --rm \ --name %p-%i \ --publish 9200:9200 \ --publish 9300:9300 \ --volumes-from elasticsearch-data-%i \ -e ELASTICSEARCH_CLUSTER_NAME=logstash \ digitalwonderland/elasticsearch \ -Des.node.name=%p-%i \ -Des.network.publish_host=${COREOS_PRIVATE_IPV4} \ -Des.discovery.zen.ping.multicast.enabled=false \ -Des.discovery.zen.ping.unicast.hosts=$UNICAST_HOSTS' ExecStop=/usr/bin/docker stop %p-%i ExecStopPost=-/usr/bin/docker rm %p-%i [Install] WantedBy=multi-user.target write_files: - path: /etc/profile.d/alias.sh content: | alias l='ls -la' alias ll='ls -lah' alias d='docker' alias ds='docker ps' alias dsa='docker ps -a' alias di='docker images' alias dl='docker logs' alias dlf='docker logs -f' alias drm='docker rm -f' alias drmi='docker rmi' alias sd='sudo systemctl' alias cci='sudo coreos-cloudinit --from-file' alias j='journalctl' function nsa { sudo nsenter -p -u -m -i -n -t $(docker inspect -f '{{ .State.Pid }}' $1) ; } users: - name: stephan passwd: $6$wvQGfgBI$0BWYNvLZrjhPpCa3T9uBzYp8rIVy2h9AapSlmYMvXhB0aqqQb./RhYC7RQmEstLY5Tg12v6ZnynDpyBVwA/Hh0 groups: - core - docker - portage - sudo - systemd-journal ssh-authorized-keys: - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5ft6HxKoLm6KtgMQrSLUYYz7iAYNnbBA9WWpOesIfz7zdzmUZMbKSKESDAVfCr9lmsAihPHYLis+tiMOPo8fP2b3fgU+zho/G9eLzV6RKbV488WYwnDcVNDi6DTsF4/yv11mKjxFEPYpigOU14nUG8IbDyRLm04pkLaxnKuiZcwFC1riT890FcohKVWnvH29VmmTjeAjHJMKEYjz/T0j2lDvj34fuS6fZhpg9WSXUbqpyg1Jxuhh7KJIwAxmMxWQnmnxk9KqnHcDhh/xD/ziNXrv8HFPQ0Tf+3oI53G86Xmb7wUFi0KF+vA0qBOJch1xjA4UFAoz/rxP4sExtqjYZ