Skip to content

Instantly share code, notes, and snippets.

@philcryer
Created May 4, 2015 15:48
Show Gist options
  • Select an option

  • Save philcryer/3bbce14263d7715df3f1 to your computer and use it in GitHub Desktop.

Select an option

Save philcryer/3bbce14263d7715df3f1 to your computer and use it in GitHub Desktop.
gist of templae - cloud-config
"UserData": {
"Fn::Base64": {
"Fn::Join": [
"",
[
"#cloud-config\n\ncoreos:\n etcd:\n addr: $",
{
"Ref": "AdvertisedIPAddress"
},
"_ipv4:4001\n peer-addr: $",
{
"Ref": "AdvertisedIPAddress"
},
"_ipv4:7001\n peer-heartbeat-interval: 1000\n peer-election-timeout: 2000\n\n fleet:\n public-ip: $",
{
"Ref": "AdvertisedIPAddress"
},
"_ipv4\n etcd-servers: http://$",
{
"Ref": "AdvertisedIPAddress"
},
"_ipv4:4001/\n etcd-request-timeout: 3\n \n units:\n - name: etcd.service\n command: start\n - name: router.service\n command: start\n content: |\n [Unit]\n Description=Run router\n After=docker.service\n Requires=docker.service\n \n [Service]\n Restart=always\n ExecStartPre=-/usr/bin/docker kill router\n ExecStartPre=-/usr/bin/docker rm router\n ExecStartPre=/usr/bin/docker pull monsantoco/axon-router:latest\n ExecStart=/usr/bin/docker run -t -e \"NS_IP=172.17.42.1\" --name router -p 80:80 monsantoco/axon-router:latest\n ExecStop=/usr/bin/docker stop router\n - name: settimezone.service\n command: start\n content: |\n [Unit]\n Description=Set the timezone\n \n [Service]\n ExecStart=/usr/bin/timedatectl set-timezone UTC\n RemainAfterExit=yes\n Type=oneshot\n \n - name: consul.service\n command: start\n content: |\n [Unit]\n Description=Consul\n After=docker.service\n After=etcd.service\n \n [Service]\n Restart=always\n RestartSec=10\n ExecStartPre=-/usr/bin/docker kill %p\n ExecStartPre=-/usr/bin/docker rm %p\n ExecStartPre=/usr/bin/docker pull progrium/consul\n ExecStart=/usr/bin/docker run --name %p -h %H -v /data/consul:/data -e GOMAXPROCS=8 -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 53:53/udp progrium/consul ",
"-server",
" -advertise $",
{
"Ref": "AdvertisedIPAddress"
},
"_ipv4 ",
"-bootstrap-expect 3",
"\n ExecStop=/usr/bin/docker stop %p\n \n [Install]\n WantedBy=multi-user.target\n - name: registrator.service\n command: start\n content: |\n [Unit]\n Description=Run registrator\n After=docker.service\n Requires=docker.service\n \n [Service]\n Restart=always\n ExecStartPre=-/usr/bin/docker kill registrator\n ExecStartPre=-/usr/bin/docker rm registrator\n ExecStartPre=/usr/bin/docker pull gliderlabs/registrator:latest\n ExecStart=/usr/bin/docker run --name registrator -v /var/run/docker.sock:/tmp/docker.sock -h %H gliderlabs/registrator:latest consul://$",
{
"Ref": "AdvertisedIPAddress"
},
"_ipv4:8500\n ExecStop=/usr/bin/docker stop registrator\n - name: logspout.service\n command: start\n content: |\n [Unit]\n Description=Logspout Docker log shipper\n \n Requires=docker.service\n Requires=consul.service\n After=docker.service\n After=consul.service\n \n [Service]\n TimeoutStartSec=10m\n Restart=on-failure\n RestartSec=10s\n \n ExecStartPre=-/usr/bin/docker kill %p\n ExecStartPre=-/usr/bin/docker rm %p\n ExecStartPre=/usr/bin/docker pull gliderlabs/logspout:latest\n \n ExecStart=/bin/sh -c \"/usr/bin/docker run --name=%p \\\n --publish 8000:8000 \\\n --dns $(ip route | awk '/docker0/ { print $NF }') \\\n --dns-search service.consul \\\n --volume=/var/run/docker.sock:/tmp/docker.sock \\\n --hostname=$HOSTNAME \\\n gliderlabs/logspout:latest \\\n syslog://logstash.service.consul:5000\"\n \n ExecStop=-/usr/bin/docker stop %p\n ExecStop=-/usr/bin/docker kill %p\n ExecStop=-/usr/bin/docker rm %p\n - name: fleet.service\n command: start\n content: |\n [Unit]\n Description=fleet daemon\n Wants=etcd.service\n After=etcd.service\n Wants=fleet.socket\n After=fleet.socket\n \n [Service]\n ExecStartPre=/usr/bin/mkdir -p /etc/fleet ; /bin/bash -c 'case $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone) in ",
{
"Ref": "AvailabilityZone1"
},
") az=1;; ",
{
"Ref": "AvailabilityZone2"
},
") az=2;; *) exit 1;; esac; echo metadata=\"location=$az\" > /etc/fleet/fleet.conf'\n ExecStart=/usr/bin/fleetd\n Restart=always\n RestartSec=10s\n - name: fleet.socket\n command: start\n enable: yes\n content: |\n [Unit]\n Description=Fleet Socket for the API\n \n [Socket]\n ListenStream=41337\n BindIPv6Only=both\n Service=fleet.service\n \n [Install]\n WantedBy=sockets.target\n - name: fleet-register.service\n command: start\n content: |\n [Unit]\n Description=Register fleet into consul\n After=consul.service\n \n [Service]\n Restart=on-failure\n RestartSec=30\n ExecStart=/usr/bin/curl --location --silent --fail -X POST $",
{
"Ref": "AdvertisedIPAddress"
},
"_ipv4:8500/v1/agent/service/register -d '{ \"ID\": \"%H:fleet\", \"Name\": \"fleet\", \"Tags\": [], \"Address\": \"$",
{
"Ref": "AdvertisedIPAddress"
},
"_ipv4\", \"Port\": 41337, \"Check\": {} }'\n \n \n \nwrite_files:\n - path: /etc/ntp.conf\n content: |\n server 0.pool.ntp.org\n server 1.pool.ntp.org\n server 2.pool.ntp.org\n server 3.pool.ntp.org\n restrict default nomodify nopeer noquery limited kod\n restrict 127.0.0.1"
]
]
}
},
"SecurityGroupIds": [
{
"Ref": "CoreOSSecurityGroup"
},
{
"Ref": "ServiceCoreOSSecurityGroup"
},
{
"Ref": "CoreOSFromBastionSecurityGroup"
}
],
"KeyName": {
"Ref": "KeyName"
},
"InstanceType": {
"Ref": "DockerInstanceType"
},
"Tags": [
{
"Key": "Name",
"Value": {
"Fn::Join": [
"-",
[
"service-leader-1",
{
"Ref": "AWS::StackName"
}
]
]
}
}
],
"Monitoring": true,
"SubnetId": {
"Ref": "PriSubnet1"
}
}
}
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment