Skip to content

Instantly share code, notes, and snippets.

@jedi4ever
Created March 30, 2015 10:02
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jedi4ever/c910b487f515a07a488c to your computer and use it in GitHub Desktop.
Save jedi4ever/c910b487f515a07a488c to your computer and use it in GitHub Desktop.
coreos cloudinit for etcd/fleet/consul/registrator/ambassador
#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