diff --git a/mesos-templates/aurora/0/docker-compose.yml b/mesos-templates/aurora/0/docker-compose.yml
new file mode 100644
index 0000000..fbf9bda
--- /dev/null
+++ b/mesos-templates/aurora/0/docker-compose.yml
@@ -0,0 +1,10 @@
+scheduler:
+ image: rancher/aurora:latest
+ environment:
+ ZK_SERVICE: ${ZK_SERVICE}
+ MESOS_SERVICE: ${MESOS_SERVICE}
+ AURORA_HTTP_PORT: ${AURORA_HTTP_PORT}
+ volumes:
+ - "/var/run/docker.sock:/var/run/docker.sock"
+ ports:
+ - "${AURORA_HTTP_PORT}:${AURORA_HTTP_PORT}"
diff --git a/mesos-templates/aurora/0/rancher-compose.yml b/mesos-templates/aurora/0/rancher-compose.yml
new file mode 100644
index 0000000..fa0f400
--- /dev/null
+++ b/mesos-templates/aurora/0/rancher-compose.yml
@@ -0,0 +1,31 @@
+.catalog:
+ name: Aurora
+ version: v1
+ description: |
+ Orchestrate long-running services and cron jobs
+ questions:
+ - variable: ZK_SERVICE
+ description: Choose the Zookeeper service to use.
+ label: Zookeeper Service
+ required: true
+ type: service
+ - variable: MESOS_SERVICE
+ description: Choose the Mesos stack to use.
+ label: Mesos Stack
+ required: true
+ type: service
+ - variable: AURORA_HTTP_PORT
+ description: Port to expose Aurora scheduler on.
+ label: Aurora Port
+ required: true
+ type: int
+ default: 8080
+aurora:
+ scale: 1
+ health_check:
+ port: ${AURORA_HTTP_PORT}
+ interval: 3000
+ unhealthy_threshold: 2
+ healthy_threshold: 2
+ request_line: '/'
+ response_timeout: 2000
diff --git a/mesos-templates/aurora/catalogIcon-aurora.svg b/mesos-templates/aurora/catalogIcon-aurora.svg
new file mode 100644
index 0000000..273fb2a
--- /dev/null
+++ b/mesos-templates/aurora/catalogIcon-aurora.svg
@@ -0,0 +1,204 @@
+
+
+
diff --git a/mesos-templates/aurora/config.yml b/mesos-templates/aurora/config.yml
new file mode 100644
index 0000000..9aa5f3c
--- /dev/null
+++ b/mesos-templates/aurora/config.yml
@@ -0,0 +1,7 @@
+name: Aurora
+description: |
+ Orchestrate long-running services and cron jobs
+version: v1
+category: Frameworks
+maintainer: James Oliver
+minimum_rancher_version: v1.0.0
diff --git a/mesos-templates/chronos/0/docker-compose.yml b/mesos-templates/chronos/0/docker-compose.yml
new file mode 100644
index 0000000..7473e0c
--- /dev/null
+++ b/mesos-templates/chronos/0/docker-compose.yml
@@ -0,0 +1,8 @@
+chronos:
+ image: rancher/chronos:latest
+ environment:
+ MESOS_SERVICE: ${MESOS_SERVICE}
+ ZK_SERVICE: ${ZK_SERVICE}
+ CHRONOS_HTTP_PORT: ${CHRONOS_HTTP_PORT}
+ ports:
+ - "${CHRONOS_HTTP_PORT}:${CHRONOS_HTTP_PORT}"
\ No newline at end of file
diff --git a/mesos-templates/chronos/0/rancher-compose.yml b/mesos-templates/chronos/0/rancher-compose.yml
new file mode 100644
index 0000000..63cac08
--- /dev/null
+++ b/mesos-templates/chronos/0/rancher-compose.yml
@@ -0,0 +1,32 @@
+.catalog:
+ name: Chronos
+ version: v1
+ description: |
+ Distributed, fault-tolerant cron
+ questions:
+ - variable: ZK_SERVICE
+ description: Choose the Zookeeper service to use.
+ label: Zookeeper Service
+ required: true
+ type: service
+ # a stack type would be nice
+ - variable: MESOS_SERVICE
+ description: Choose the Mesos stack to use.
+ label: Mesos Stack
+ required: true
+ type: service
+ - variable: CHRONOS_HTTP_PORT
+ description: Port to expose Chronos on.
+ label: Chronos Port
+ required: true
+ type: int
+ default: 8080
+chronos:
+ scale: 1
+ health_check:
+ port: ${CHRONOS_HTTP_PORT}
+ interval: 3000
+ unhealthy_threshold: 2
+ healthy_threshold: 2
+ request_line: '/'
+ response_timeout: 2000
diff --git a/mesos-templates/chronos/catalogIcon-chronos.svg b/mesos-templates/chronos/catalogIcon-chronos.svg
new file mode 100644
index 0000000..b39a826
--- /dev/null
+++ b/mesos-templates/chronos/catalogIcon-chronos.svg
@@ -0,0 +1,40 @@
+
+
+
diff --git a/mesos-templates/chronos/config.yml b/mesos-templates/chronos/config.yml
new file mode 100644
index 0000000..dc8435c
--- /dev/null
+++ b/mesos-templates/chronos/config.yml
@@ -0,0 +1,7 @@
+name: Chronos
+description: |
+ Distributed, fault-tolerant cron replacement
+version: v1
+category: Frameworks
+maintainer: James Oliver
+minimum_rancher_version: v1.0.0
diff --git a/mesos-templates/elasticsearch/0/docker-compose.yml b/mesos-templates/elasticsearch/0/docker-compose.yml
new file mode 100644
index 0000000..7be3d56
--- /dev/null
+++ b/mesos-templates/elasticsearch/0/docker-compose.yml
@@ -0,0 +1,10 @@
+scheduler:
+ image: rancher/elasticsearch:latest
+ environment:
+ MESOS_SERVICE: ${MESOS_SERVICE}
+ ZK_SERVICE: ${ZK_SERVICE}
+ SCHEDULER_PORT: ${SCHEDULER_PORT}
+ JAVA_OPTS: -Xms256M -Xmx256M
+ NODE_COUNT: ${NODE_COUNT}
+ ports:
+ - "${SCHEDULER_PORT}:${SCHEDULER_PORT}"
diff --git a/mesos-templates/elasticsearch/0/rancher-compose.yml b/mesos-templates/elasticsearch/0/rancher-compose.yml
new file mode 100644
index 0000000..aab1b5a
--- /dev/null
+++ b/mesos-templates/elasticsearch/0/rancher-compose.yml
@@ -0,0 +1,37 @@
+.catalog:
+ name: Elasticsearch
+ version: v1
+ description: |
+ You know, for search
+ questions:
+ - variable: ZK_SERVICE
+ description: Choose the Zookeeper service to use.
+ label: Zookeeper Service
+ required: true
+ type: service
+ - variable: MESOS_SERVICE
+ description: Choose the Mesos stack to use.
+ label: Mesos Stack
+ required: true
+ type: service
+ - variable: SCHEDULER_PORT
+ description: Port to expose scheduler on.
+ label: Scheduler Port
+ required: true
+ type: int
+ default: 31100
+ - variable: NODE_COUNT
+ description: Number of Elasticsearch instances to run.
+ label: Node Count
+ required: true
+ type: int
+ default: 3
+scheduler:
+ scale: 1
+ health_check:
+ port: ${SCHEDULER_PORT}
+ interval: 3000
+ unhealthy_threshold: 2
+ healthy_threshold: 2
+ request_line: '/'
+ response_timeout: 2000
diff --git a/mesos-templates/elasticsearch/catalogIcon-elasticsearch.svg b/mesos-templates/elasticsearch/catalogIcon-elasticsearch.svg
new file mode 100644
index 0000000..3fefa14
--- /dev/null
+++ b/mesos-templates/elasticsearch/catalogIcon-elasticsearch.svg
@@ -0,0 +1,102 @@
+
+
+
diff --git a/mesos-templates/elasticsearch/config.yml b/mesos-templates/elasticsearch/config.yml
new file mode 100644
index 0000000..dfcce46
--- /dev/null
+++ b/mesos-templates/elasticsearch/config.yml
@@ -0,0 +1,7 @@
+name: Elasticsearch
+description: |
+ You know, for search
+version: v1
+category: Frameworks
+maintainer: James Oliver
+minimum_rancher_version: v1.0.0
diff --git a/mesos-templates/kafka/0/docker-compose.yml b/mesos-templates/kafka/0/docker-compose.yml
new file mode 100644
index 0000000..315b342
--- /dev/null
+++ b/mesos-templates/kafka/0/docker-compose.yml
@@ -0,0 +1,8 @@
+scheduler:
+ image: rancher/kafka:latest
+ environment:
+ MESOS_SERVICE: ${MESOS_SERVICE}
+ ZK_SERVICE: ${ZK_SERVICE}
+ SCHEDULER_PORT: ${SCHEDULER_PORT}
+ ports:
+ - "${SCHEDULER_PORT}:${SCHEDULER_PORT}"
diff --git a/mesos-templates/kafka/0/rancher-compose.yml b/mesos-templates/kafka/0/rancher-compose.yml
new file mode 100644
index 0000000..b4243d1
--- /dev/null
+++ b/mesos-templates/kafka/0/rancher-compose.yml
@@ -0,0 +1,30 @@
+.catalog:
+ name: Kafka
+ version: v1
+ description: |
+ A high-throughput distributed messaging system
+ questions:
+ - variable: ZK_SERVICE
+ description: Choose the Zookeeper service to use.
+ label: Zookeeper Service
+ required: true
+ type: service
+ - variable: MESOS_SERVICE
+ description: Choose the Mesos stack to use.
+ label: Mesos Stack
+ required: true
+ type: service
+ - variable: SCHEDULER_PORT
+ description: Port to expose Kafka Scheduler on.
+ label: Scheduler Port
+ required: true
+ type: int
+ default: 7000
+scheduler:
+ health_check:
+ port: ${SCHEDULER_PORT}
+ interval: 3000
+ unhealthy_threshold: 2
+ healthy_threshold: 2
+ request_line: '/health'
+ response_timeout: 2000
diff --git a/mesos-templates/kafka/README.md b/mesos-templates/kafka/README.md
new file mode 100644
index 0000000..d34134a
--- /dev/null
+++ b/mesos-templates/kafka/README.md
@@ -0,0 +1,52 @@
+# Kafka Mesos Framework
+
+Kafka framework doesn't support Docker executors, so your Mesos Slaves must have `java` installed.
+
+There is also no GUI. The CLI is wrapped for your convenience, and may be used from within the scheduler container:
+
+```bash
+root@5a466883dda2:/# kafka broker add 0..1 --cpus 0.1 --heap 256 --mem 384
+brokers added:
+ id: 0
+ active: false
+ state: stopped
+ resources: cpus:0.10, mem:384, heap:256, port:auto
+ failover: delay:1m, max-delay:10m
+ stickiness: period:10m
+
+ id: 1
+ active: false
+ state: stopped
+ resources: cpus:0.10, mem:384, heap:256, port:auto
+ failover: delay:1m, max-delay:10m
+ stickiness: period:10m
+
+root@5a466883dda2:/# kafka broker start 0..1
+brokers started:
+ id: 0
+ active: true
+ state: running
+ resources: cpus:0.10, mem:384, heap:256, port:auto
+ failover: delay:1m, max-delay:10m
+ stickiness: period:10m, hostname:192.168.99.108
+ task:
+ id: broker-0-899d16d4-00bb-445a-8f57-95464640413f
+ state: running
+ endpoint: 192.168.99.108:31000
+ metrics:
+ collected: 2016-04-21 23:35:24Z
+ under-replicated-partitions: 0
+ offline-partitions-count: 2
+ is-active-controller: 1
+
+ id: 1
+ active: true
+ state: running
+ resources: cpus:0.10, mem:384, heap:256, port:auto
+ failover: delay:1m, max-delay:10m
+ stickiness: period:10m, hostname:192.168.99.108
+ task:
+ id: broker-1-97d19b5e-6d2b-4f15-8c49-abc217aac9a9
+ state: running
+ endpoint: 192.168.99.108:31001
+```
diff --git a/mesos-templates/kafka/catalogIcon-kafka.svg b/mesos-templates/kafka/catalogIcon-kafka.svg
new file mode 100644
index 0000000..7491861
--- /dev/null
+++ b/mesos-templates/kafka/catalogIcon-kafka.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/mesos-templates/kafka/config.yml b/mesos-templates/kafka/config.yml
new file mode 100644
index 0000000..ead57e6
--- /dev/null
+++ b/mesos-templates/kafka/config.yml
@@ -0,0 +1,7 @@
+name: Kafka
+description: |
+ A high-throughput distributed messaging system
+version: v1
+category: Frameworks
+maintainer: James Oliver
+minimum_rancher_version: v1.0.0
diff --git a/mesos-templates/marathon/0/docker-compose.yml b/mesos-templates/marathon/0/docker-compose.yml
new file mode 100644
index 0000000..a665a59
--- /dev/null
+++ b/mesos-templates/marathon/0/docker-compose.yml
@@ -0,0 +1,8 @@
+marathon:
+ image: rancher/marathon:latest
+ environment:
+ MESOS_SERVICE: ${MESOS_SERVICE}
+ ZK_SERVICE: ${ZK_SERVICE}
+ MARATHON_HTTP_PORT: ${MARATHON_HTTP_PORT}
+ ports:
+ - "${MARATHON_HTTP_PORT}:${MARATHON_HTTP_PORT}"
diff --git a/mesos-templates/marathon/0/rancher-compose.yml b/mesos-templates/marathon/0/rancher-compose.yml
new file mode 100644
index 0000000..c27b5ef
--- /dev/null
+++ b/mesos-templates/marathon/0/rancher-compose.yml
@@ -0,0 +1,32 @@
+.catalog:
+ name: Marathon
+ version: v1
+ description: |
+ Container orchestration platform for Mesos and DCOS
+ questions:
+ - variable: ZK_SERVICE
+ description: Choose the Zookeeper service to use.
+ label: Zookeeper Service
+ required: true
+ type: service
+ # a stack type would be nice
+ - variable: MESOS_SERVICE
+ description: Choose the Mesos stack to use.
+ label: Mesos Stack
+ required: true
+ type: service
+ - variable: MARATHON_HTTP_PORT
+ description: Port to expose Marathon on.
+ label: Marathon Port
+ required: true
+ type: int
+ default: 8080
+marathon:
+ scale: 1
+ health_check:
+ port: ${MARATHON_HTTP_PORT}
+ interval: 3000
+ unhealthy_threshold: 2
+ healthy_threshold: 2
+ request_line: '/'
+ response_timeout: 2000
diff --git a/mesos-templates/marathon/catalogIcon-marathon.svg b/mesos-templates/marathon/catalogIcon-marathon.svg
new file mode 100644
index 0000000..f6247b2
--- /dev/null
+++ b/mesos-templates/marathon/catalogIcon-marathon.svg
@@ -0,0 +1,86 @@
+
+
+
diff --git a/mesos-templates/marathon/config.yml b/mesos-templates/marathon/config.yml
new file mode 100644
index 0000000..eec7c9f
--- /dev/null
+++ b/mesos-templates/marathon/config.yml
@@ -0,0 +1,7 @@
+name: Marathon
+description: |
+ A production-grade container orchestration platform
+version: v1
+category: Frameworks
+maintainer: James Oliver
+minimum_rancher_version: v1.0.0
diff --git a/mesos-templates/mesos/0/docker-compose.yml b/mesos-templates/mesos/0/docker-compose.yml
new file mode 100644
index 0000000..2bc35f5
--- /dev/null
+++ b/mesos-templates/mesos/0/docker-compose.yml
@@ -0,0 +1,31 @@
+master:
+ image: rancher/mesos-master:latest
+ environment:
+ MESOS_CLUSTER: ${MESOS_CLUSTER}
+ MESOS_QUORUM: ${MESOS_QUORUM}
+ MASTER_PORT: ${MASTER_PORT}
+ ZK_SERVICE: ${ZK_SERVICE}
+ ZK_SESSION_TIMEOUT: ${ZK_SESSION_TIMEOUT}
+ ports:
+ - "${MASTER_PORT}:${MASTER_PORT}"
+ labels:
+ mesos: master
+ io.rancher.scheduler.affinity:container_label_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
+ io.rancher.scheduler.affinity:container_label_soft_ne: mesos=slave
+ volumes:
+ - /data
+slave:
+ image: rancher/mesos-slave:latest
+ environment:
+ SLAVE_PORT: ${SLAVE_PORT}
+ ZK_SERVICE: ${ZK_SERVICE}
+ ports:
+ - "${SLAVE_PORT}:${SLAVE_PORT}"
+ labels:
+ mesos: slave
+ io.rancher.scheduler.affinity:container_label_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
+ io.rancher.scheduler.affinity:container_label_soft_ne: mesos=master
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ - /data
+ privileged: true
diff --git a/mesos-templates/mesos/0/rancher-compose.yml b/mesos-templates/mesos/0/rancher-compose.yml
new file mode 100644
index 0000000..ad9c78a
--- /dev/null
+++ b/mesos-templates/mesos/0/rancher-compose.yml
@@ -0,0 +1,69 @@
+.catalog:
+ name: Mesos
+ version: v1
+ questions:
+ - variable: ZK_SERVICE
+ description: Choose the Zookeeper service to use.
+ label: Zookeeper Service
+ required: true
+ type: service
+ - variable: ZK_SESSION_TIMEOUT
+ description: You may need to increase this in virtualized environments or else zk requests will fail.
+ label: Zookeeper Session Timeout
+ required: true
+ type: string
+ default: 10secs
+ - variable: MESOS_CLUSTER
+ description: Mesos cluster name to appear in the Master UI.
+ label: Cluster Name
+ required: true
+ type: string
+ default: rancher
+ - variable: MESOS_QUORUM
+ description: Mesos Master quorum count is computed as floor( MESOS_MASTERS / 2 )
+ label: Mesos Master Quorum
+ required: true
+ type: int
+ default: 2
+ - variable: MESOS_MASTERS
+ description: Number of Mesos Master nodes to run.
+ label: Mesos Masters
+ required: true
+ type: int
+ default: 3
+ - variable: MASTER_PORT
+ description: Port to expose Mesos masters on.
+ label: Master Port
+ required: true
+ type: int
+ default: 5050
+ - variable: MESOS_SLAVES
+ description: Number of Mesos Slaves to run.
+ label: Mesos Slaves
+ required: true
+ type: int
+ default: 3
+ - variable: SLAVE_PORT
+ description: Port to expose Mesos slaves on.
+ label: Slave Port
+ required: true
+ type: int
+ default: 5051
+master:
+ scale: ${MESOS_MASTERS}
+ health_check:
+ port: ${MASTER_PORT}
+ interval: 3000
+ unhealthy_threshold: 2
+ healthy_threshold: 2
+ request_line: '/metrics/snapshot'
+ response_timeout: 2000
+slave:
+ scale: ${MESOS_SLAVES}
+ health_check:
+ port: ${SLAVE_PORT}
+ interval: 5000
+ unhealthy_threshold: 2
+ healthy_threshold: 2
+ request_line: ''
+ response_timeout: 3000
diff --git a/mesos-templates/mesos/catalogIcon-mesos.svg b/mesos-templates/mesos/catalogIcon-mesos.svg
new file mode 100644
index 0000000..c54b281
--- /dev/null
+++ b/mesos-templates/mesos/catalogIcon-mesos.svg
@@ -0,0 +1,36 @@
+
+
+
diff --git a/mesos-templates/mesos/config.yml b/mesos-templates/mesos/config.yml
new file mode 100644
index 0000000..89bf050
--- /dev/null
+++ b/mesos-templates/mesos/config.yml
@@ -0,0 +1,8 @@
+name: Mesos
+description: |
+ Abstract resources away from machines, enabling
+ fault-tolerant and elastic distributed systems
+version: v1
+category: System
+maintainer: James Oliver
+minimum_rancher_version: v1.0.0
diff --git a/mesos-templates/zookeeper/0/README.md b/mesos-templates/zookeeper/0/README.md
new file mode 100644
index 0000000..74a313c
--- /dev/null
+++ b/mesos-templates/zookeeper/0/README.md
@@ -0,0 +1,21 @@
+# Apache Zookeeper (Experimental)
+
+
+### Info:
+
+ This template creates, scale in and scale out a multinodes zk (zookeeper) cluster on top of Rancher. The configuration is generated with confd from Rancher metadata.
+ Cluster size are variable after deployment, and get reconfigured if refresh interval > 0.
+
+
+### Usage:
+
+ Select Apache Zookeeper from catalog.
+
+ Enter the number of nodes, mem and refresh interval for the zk cluster. (set refresh data to 0 to disable dinamic config)
+
+ Note: When you scale the cluster, zero downtime is not guaranteed..yet..
+
+ Click deploy.
+
+ Zookeeper can now be accessed over the Rancher network.
+
diff --git a/mesos-templates/zookeeper/0/docker-compose.yml b/mesos-templates/zookeeper/0/docker-compose.yml
new file mode 100644
index 0000000..a57a7bd
--- /dev/null
+++ b/mesos-templates/zookeeper/0/docker-compose.yml
@@ -0,0 +1,7 @@
+zk:
+ image: rancher/zookeeper:3.4.6-2
+ volumes:
+ - /opt/zk/data
+ environment:
+ - JVMFLAGS=-Xmx${zk_mem}m -Xms${zk_mem}m
+ - CONFD_INTERVAL=${zk_interval}
diff --git a/mesos-templates/zookeeper/0/rancher-compose.yml b/mesos-templates/zookeeper/0/rancher-compose.yml
new file mode 100644
index 0000000..b78bda5
--- /dev/null
+++ b/mesos-templates/zookeeper/0/rancher-compose.yml
@@ -0,0 +1,36 @@
+.catalog:
+ name: Zookeeper
+ version: 3.4.6-rancher2
+ description: |
+ (Experimental) Apache Zookeeper cluster.
+ minimum_rancher_version: v0.56.0
+ maintainer: "Raul Sanchez "
+ uuid: zk-0
+ questions:
+ - variable: "zk_scale"
+ description: "Number of zk nodes. Note: Recommended an odd number"
+ label: "Zk Nodes:"
+ required: true
+ default: 3
+ type: "int"
+ - variable: "zk_mem"
+ description: "Amount of memory to config zk."
+ label: "Zk Memory (mb):"
+ required: true
+ default: 512
+ type: "string"
+ - variable: "zk_interval"
+ description: "Interval to poll/apply configuration changes. 0 to disable, reconfiguration will be done when you restart zk nodes"
+ label: "Zk Interval (s):"
+ required: true
+ default: 60
+ type: "int"
+zk:
+ scale: ${zk_scale}
+ health_check:
+ port: 2181
+ interval: 5000
+ unhealthy_threshold: 3
+ request_line: ''
+ healthy_threshold: 2
+ response_timeout: 5000
diff --git a/mesos-templates/zookeeper/catalogIcon-zookeeper.png b/mesos-templates/zookeeper/catalogIcon-zookeeper.png
new file mode 100644
index 0000000..df751f4
Binary files /dev/null and b/mesos-templates/zookeeper/catalogIcon-zookeeper.png differ
diff --git a/mesos-templates/zookeeper/config.yml b/mesos-templates/zookeeper/config.yml
new file mode 100644
index 0000000..a2cb52a
--- /dev/null
+++ b/mesos-templates/zookeeper/config.yml
@@ -0,0 +1,9 @@
+name: Zookeeper
+description: |
+ Maintain configuration information, naming, provide
+ distributed synchronization and group services
+version: 3.4.6-rancher2
+category: System
+maintainer: "Raul Sanchez "
+minimum_rancher_version: v0.56.0
+license: