Created
March 30, 2015 10:02
-
-
Save jedi4ever/c910b487f515a07a488c to your computer and use it in GitHub Desktop.
coreos cloudinit for etcd/fleet/consul/registrator/ambassador
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#cloud-config | |
write_files: | |
- path: /etc/systemd/system/docker.service.d/increase-ulimit.conf | |
owner: core:core | |
permissions: 0644 | |
content: | | |
[Service] | |
LimitMEMLOCK=infinity | |
- path: /etc/ntp.conf | |
content: | | |
# Common pool | |
server 0.pool.ntp.org | |
server 1.pool.ntp.org | |
# - Allow only time queries, at a limited rate. | |
# - Allow all local queries (IPv4, IPv6) | |
restrict default nomodify nopeer noquery limited kod | |
restrict 127.0.0.1 | |
restrict [::1] | |
coreos: | |
etcd: | |
# generate a new token for each unique cluster from https://discovery.etcd.io/new | |
discovery: https://discovery.etcd.io/xxxxxxxx | |
# multi-region and multi-cloud deployments need to use $public_ipv4 | |
addr: $private_ipv4:4001 | |
peer-addr: $private_ipv4:7001 | |
units: | |
- name: format-ephemeral.service | |
command: start | |
content: | | |
[Unit] | |
Description=Formats the ephemeral drive | |
[Service] | |
Type=oneshot | |
RemainAfterExit=yes | |
ExecStart=/usr/sbin/wipefs -f /dev/xvdf | |
ExecStart=/usr/sbin/mkfs.btrfs -f /dev/xvdf | |
- name: var-lib-docker.mount | |
command: start | |
content: | | |
[Unit] | |
Description=Mount ephemeral to /var/lib/docker | |
Requires=format-ephemeral.service | |
After=format-ephemeral.service | |
Before=docker.service | |
[Mount] | |
What=/dev/xvdf | |
Where=/var/lib/docker | |
Type=btrfs | |
- name: settimezone.service | |
command: start | |
content: | | |
[Unit] | |
Description=Set the timezone | |
[Service] | |
ExecStart=/usr/bin/timedatectl set-timezone Europe/Brussels | |
RemainAfterExit=yes | |
Type=oneshot | |
- name: etcd.service | |
command: start | |
- name: fleet.service | |
command: start | |
- name: docker-tcp.socket | |
command: start | |
enable: yes | |
content: | | |
[Unit] | |
Description=Docker Socket for the API | |
[Socket] | |
ListenStream=127.0.0.1:2375 | |
BindIPv6Only=both | |
Service=docker.service | |
[Install] | |
WantedBy=sockets.target | |
- name: enable-docker-tcp.service | |
command: start | |
content: | | |
[Unit] | |
Description=Enable the Docker Socket for the API | |
[Service] | |
Type=oneshot | |
ExecStart=/usr/bin/systemctl enable docker-tcp.socket | |
- name: consul.service | |
content: | | |
[Unit] | |
Description=Consul | |
After=fleet.service docker.service | |
Requires=docker.service | |
[Service] | |
TimeoutStartSec=0 | |
EnvironmentFile=/etc/environment | |
ExecStartPre=-/usr/bin/docker kill consul | |
ExecStartPre=-/usr/bin/docker rm consul | |
ExecStartPre=/usr/bin/docker pull progrium/consul | |
ExecStartPre=-/usr/bin/etcdctl mk /consul $COREOS_PRIVATE_IPV4 | |
ExecStart=/bin/bash -c " \ | |
/usr/bin/docker run \ | |
--rm --name consul \ | |
-h %H \ | |
-p ${COREOS_PRIVATE_IPV4}:8300:8300 \ | |
-p ${COREOS_PRIVATE_IPV4}:8301:8301 \ | |
-p ${COREOS_PRIVATE_IPV4}:8301:8301/udp \ | |
-p ${COREOS_PRIVATE_IPV4}:8302:8302 \ | |
-p ${COREOS_PRIVATE_IPV4}:8302:8302/udp \ | |
-p ${COREOS_PRIVATE_IPV4}:8400:8400 \ | |
-p ${COREOS_PRIVATE_IPV4}:8500:8500 \ | |
-p $(/usr/bin/ip -f inet addr show docker0 | grep inet | /usr/bin/cut -d ' ' -f 6 | /usr/bin/cut -d '/' -f 1):53:53/udp \ | |
progrium/consul \ | |
-server \ | |
-bootstrap-expect 2 \ | |
-advertise ${COREOS_PRIVATE_IPV4}" | |
ExecStop=/usr/bin/docker kill consul | |
[Install] | |
WantedBy=multi-user.target | |
- name: consul-discovery.service | |
command: start | |
enable: true | |
content: | | |
[Unit] | |
Description=Consul Discovery | |
BindsTo=consul.service | |
After=consul.service | |
[Service] | |
EnvironmentFile=/etc/environment | |
ExecStart=/bin/bash -c " \ | |
while true; \ | |
do etcdctl mk /services/consul $COREOS_PRIVATE_IPV4 --ttl 60; \ | |
/usr/bin/docker exec consul consul join $(etcdctl get /services/consul); \ | |
sleep 45 \ | |
;done" | |
ExecStop=/usr/bin/etcdctl rm /services/consul --with-value %H | |
- name: registrator.service | |
command: start | |
enable: true | |
content: | | |
[Unit] | |
Description=Registrator | |
After=consul.service | |
Requires=consul.service | |
[Service] | |
TimeoutStartSec=0 | |
Restart=always | |
EnvironmentFile=/etc/environment | |
ExecStartPre=-/usr/bin/docker kill registrator | |
ExecStartPre=-/usr/bin/docker rm registrator | |
ExecStartPre=/usr/bin/docker gliderlabs/registrator | |
ExecStart=/usr/bin/docker run \ | |
--name registrator \ | |
-h %H \ | |
-v /var/run/docker.sock:/tmp/docker.sock \ | |
--link consul:consul \ | |
gliderlabs/registrator \ | |
consul://consul:8500 | |
ExecStop=/usr/bin/docker kill registrator | |
[Install] | |
WantedBy=multi-user.target | |
- name: ambassadord.service | |
command: start | |
enable: true | |
content: | | |
[Unit] | |
Description=Ambassadord in Omni Mode | |
After=consul.service | |
Requires=consul.service | |
[Service] | |
TimeoutStartSec=0 | |
Restart=always | |
EnvironmentFile=/etc/environment | |
ExecStartPre=-/usr/bin/docker kill backends | |
ExecStartPre=-/usr/bin/docker rm backends | |
ExecStartPre=/usr/bin/docker pull progrium/ambassadord | |
ExecStart=/usr/bin/docker run \ | |
--name backends \ | |
-h %H \ | |
-v /var/run/docker.sock:/var/run/docker.sock \ | |
progrium/ambassadord \ | |
--omnimode | |
ExecStartPost=/usr/bin/docker run \ | |
--rm \ | |
--privileged \ | |
--net container:backends \ | |
progrium/ambassadord \ | |
--setup-iptables | |
ExecStop=/usr/bin/docker kill backends | |
[Install] | |
WantedBy=multi-user.target |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment