colebrumley
5/28/2015 - 6:59 PM

user-data.weave.yml

user-data.weave.yml

#cloud-config

---
coreos:
  etcd:
    discovery: https://discovery.etcd.io/559e1af13634ecbb80dfa0a0d04cff9a
    addr: $public_ipv4:4001
    peer-addr: $public_ipv4:7001
  fleet:
    public-ip: $public_ipv4
  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
  - name: 10-weave.network
    runtime: false
    content: |
      [Match]
      Type=bridge
      Name=weave*
      [Network]
  - name: install-weave.service
    command: start
    enable: true
    content: |
      [Unit]
      After=network-online.target
      After=docker.service
      Description=Install Weave
      Documentation=http://zettio.github.io/weave/
      Requires=network-online.target
      Requires=docker.service
      [Service]
      Type=oneshot
      RemainAfterExit=yes
      ExecStartPre=/bin/mkdir -p /opt/bin/
      ExecStartPre=/usr/bin/curl \
        --silent \
        --location \
        https://github.com/weaveworks/weave/releases/download/latest_release/weave \
        --output /opt/bin/weave
      ExecStartPre=/usr/bin/chmod +x /opt/bin/weave
      ExecStartPre=/usr/bin/docker pull zettio/weave:latest
      ExecStartPre=/usr/bin/docker pull zettio/weavetools:latest
      ExecStartPre=/usr/bin/docker pull zettio/weavedns:latest
      ExecStartPre=/usr/bin/docker pull weaveworks/weaveexec:latest
      ExecStart=/bin/echo Weave Installed
  - name: weave.service
    command: start
    enable: true
    content: |
      [Unit]
      After=install-weave.service
      Description=Weave Network
      Documentation=http://zettio.github.io/weave/
      Requires=install-weave.service
      [Service]
      EnvironmentFile=/etc/weave.%H.env
      ExecStartPre=/opt/bin/weave launch -iprange 10.99.0.0/16 $WEAVE_LAUNCH_ARGS
      ExecStart=/usr/bin/docker logs -f weave
      SuccessExitStatus=2
      ExecStop=/opt/bin/weave stop
  - name: weave-dns.service
    command: start
    enable: true
    content: |
      [Unit]
      After=weave.service
      Description=Weave Network
      Documentation=http://zettio.github.io/weave/
      Requires=install-weave.service
      Requires=weave.service
      [Service]
      EnvironmentFile=/etc/weave.%H.env
      ExecStartPre=/opt/bin/weave launch-dns 10.99.0.0/16
      ExecStart=/usr/bin/docker logs -f weavedns
      SuccessExitStatus=2
      ExecStop=/opt/bin/weave stop-dns
  - name: load-services.service
    command: start
    content: |
      [Service]
      Type=oneshot
      ExecStart=/srv/load.sh
write_files:
- path: /etc/weave.core-01.env
  permissions: 416
  owner: root
  content: |
    WEAVE_LAUNCH_ARGS=""
- path: /etc/weave.core-02.env
  permissions: 416
  owner: root
  content: |
    WEAVE_LAUNCH_ARGS="172.17.8.101"
- path: /etc/weave.core-03.env
  permissions: 416
  owner: root
  content: WEAVE_LAUNCH_ARGS="172.17.8.101"
- path: /etc/fleet/influxdb.service
  permissions: 416
  owner: root
  content: |
    [Unit]
    Description=InfluxDB Service
    [Service]
    TimeoutStartSec=10m
    Restart=always
    ExecStartPre=-/usr/bin/docker kill influxdb
    ExecStartPre=-/usr/bin/docker rm -f influxdb
    ExecStartPre=/usr/bin/docker pull kubernetes/heapster_influxdb:v0.3
    ExecStartPre=/opt/bin/weave run --with-dns -p 8083:8083 -p 8086:8086 --name influxdb -h influxdb.weave.local kubernetes/heapster_influxdb:v0.3
    ExecStart=/usr/bin/docker logs -f influxdb
    ExecStop=/usr/bin/docker stop -t 2 influxdb
    [X-Fleet]
    X-Conflicts=influxdb.service
- path: /etc/fleet/heapster.service
  permissions: 416
  owner: root
  content: |
    [Unit]
    Description=Heapster Service
    [Service]
    EnvironmentFile=/etc/environment
    TimeoutStartSec=10m
    Restart=always
    ExecStartPre=-/usr/bin/docker kill heapster
    ExecStartPre=-/usr/bin/docker rm -f heapster
    ExecStartPre=/usr/bin/docker pull elcolio/heapster-docker
    ExecStartPre=/bin/bash -c '/opt/bin/weave run --with-dns --name heapster elcolio/heapster-docker --source="cadvisor:coreos?cadvisorPort=4194&fleetEndpoint=http://${COREOS_PUBLIC_IPV4}:4001" --sink=influxdb:http://influxdb.weave.local:8086'
    ExecStart=/usr/bin/docker logs -f heapster
    ExecStop=/usr/bin/docker stop -t 2 heapster
    [X-Fleet]
    X-Conflicts=heapster.service
- path: /etc/fleet/cadvisor.service
  permissions: 416
  owner: root
  content: |-
    [Unit]
    Description=cAdvisor Service
    After=docker.service
    Requires=docker.service
    [Service]
    TimeoutStartSec=10m
    Restart=always
    ExecStartPre=-/usr/bin/docker kill cadvisor
    ExecStartPre=-/usr/bin/docker rm -f cadvisor
    ExecStartPre=/usr/bin/docker pull google/cadvisor
    ExecStartPre=/opt/bin/weave run --with-dns -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -p 4194:4194 --name cadvisor google/cadvisor:latest --logtostderr --port=4194
    ExecStart=/usr/bin/docker logs -f cadvisor
    ExecStop=/usr/bin/docker stop -t 2 cadvisor
    [X-Fleet]
    Global=true
- path: /srv/load.sh
  permissions: '0755'
  content: |-
    #!/bin/bash
    if [[ $HOSTNAME -eq "core-01" ]]; then
      for var in $(ls /etc/fleet); do
        fleetctl load /etc/fleet/$var
      done
    fi