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: