From f4c1c0ee3e6c5734a7bbf0e7bd0023eb3e21cf30 Mon Sep 17 00:00:00 2001 From: Solomon English Date: Sat, 19 Oct 2019 12:32:03 -0700 Subject: [PATCH] Add a Graylog to one click apps (#90) * Add a Graylog to one click apps * Allow http or https to be used --- public/v2/apps/graylog.json | 117 ++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 public/v2/apps/graylog.json diff --git a/public/v2/apps/graylog.json b/public/v2/apps/graylog.json new file mode 100644 index 0000000..1ca2fe5 --- /dev/null +++ b/public/v2/apps/graylog.json @@ -0,0 +1,117 @@ +{ + "captainVersion": "2", + "documentation": "Taken from https://hub.docker.com/r/graylog/graylog", + "dockerCompose": { + "version": "3.3", + "services": { + "$$cap_appname-mongodb": { + "image": "mongo:$$cap_mongo_version", + "notExposeAsWebApp": "true", + "volumes": [ + "$$cap_appname-db-data:/data/db", + "$$cap_appname-db-config:/data/configdb" + ], + "restart": "always" + }, + "$$cap_appname-elasticsearch": { + "notExposeAsWebApp": "true", + "image" : "docker.elastic.co/elasticsearch/elasticsearch:$$cap_elasticsearch_version", + "volumes": [ + "$$cap_appname-elasticsearch-data:/usr/share/elasticsearch/data" + ], + "restart": "always", + "environment": { + "ES_JAVA_OPTS": "-Xms512m -Xmx512m", + "cluster.name": "$$cap_elasticsearch_cluster_name", + "http.port": "$$cap_container_port", + "node.master": "$$cap_elasticsearch_node_master", + "node.data": "$$cap_elasticsearch_node_data", + "discovery.zen.minimum_master_nodes": "$$cap_elasticsearch_minimum_master_nodes", + "discovery.zen.ping.unicast.hosts": "$$cap_elasticsearch_unicast_hosts" + } + }, + "$$cap_appname": { + "depends_on": [ + "$$cap_appname-mongodb", + "$$cap_appname-elasticsearch" + ], + "image": "graylog/graylog:$$cap_graylog_version", + "containerHttpPort": "9000", + "restart": "always", + "environment": { + "GRAYLOG_MONGODB_URI": "mongodb://srv-captain--$$cap_appname-mongodb/graylog", + "GRAYLOG_ELASTICSEARCH_HOSTS": "http://srv-captain--$$cap_appname-elasticsearch:$$cap_container_port", + "GRAYLOG_HTTP_EXTERNAL_URI": "//$$cap_appname.$$cap_root_domain/", + "GRAYLOG_ROOT_PASSWORD_SHA2": "$$cap_graylog_password" + } + } + } + }, + "instructions": { + "start": "Graylog Log Management. \n\nNOTICE!:\n Be sure to extend the virtual memory on all your hosts! \n 1. echo 'vm.max_map_count=262144' >> /etc/sysctl.conf\n 2. sysctl -p", + "end": "Deployment of Graylog if finished. You will see 502 errors for the next 5+ minutes while Graylog starts up. Goto and login as \"admin\" with your unhashed password." + }, + "variables": [{ + "id": "$$cap_graylog_version", + "label": "Graylog Version", + "defaultValue": "3.1", + "description": "Checkout their docker page for the valid tags https://hub.docker.com/r/graylog/graylog/tags", + "validRegex": "/^([^\\s^\\/])+$/" + }, { + "id": "$$cap_graylog_password", + "label": "Graylog Admin Password", + "defaultValue": "", + "description": "Admin password SHA256 encoded. Generate with: echo -n \"\" | shasum -a 256 | cut -d\" \" -f1", + "validRegex": "/^([^\\s^\\/])+$/" + }, { + "id": "$$cap_mongo_version", + "label": "MongoDB Version", + "defaultValue": "4", + "description": "Checkout their docker page for the valid tags https://hub.docker.com/r/library/mongo/tags/", + "validRegex": "/^([^\\s^\\/])+$/" + }, + { + "id": "$$cap_elasticsearch_version", + "label": "Elasticsearch Version Tag ", + "description": "Checkout the releases overview: https://www.elastic.co/de/downloads/elasticsearch", + "defaultValue": "6.7.1", + "validRegex": "/^([^\\s^\\/])+$/" + },{ + "id": "$$cap_elasticsearch_cluster_name", + "label": "Elasticsearch Cluster Name", + "description": "Only nodes within the same cluster name can be combined", + "defaultValue": "elasticsearch-cluster", + "validRegex": "/^([^\\s^\\/])+$/" + },{ + "id": "$$cap_elasticsearch_unicast_hosts", + "label": "Elasticsearch Unicasts hosts", + "description": "References to other node to attach to. (for example: srv-captain--XXX)", + "defaultValue": "false", + "validRegex": "/^([^\\s^\\/])+$/" + },{ + "id": "$$cap_elasticsearch_node_data", + "label": "Elasticsearch Node Data", + "description": "Should the node used for storing data? (true / false)", + "defaultValue": "true", + "validRegex": "/^([^\\s^\\/])+$/" + },{ + "id": "$$cap_elasticsearch_node_master", + "label": "Elasticsearch Node Master", + "description": "Define node as master-eligible (usual first node YES, others NO).", + "defaultValue": "true", + "validRegex": "/^([^\\s^\\/])+$/" + },{ + "id": "$$cap_elasticsearch_minimum_master_nodes", + "label": "Elasticsearch Minimum Master Nodes", + "description": "Define minimum amount of master (N) ( best practice: ceil(N/2 + 1) ).", + "defaultValue": "1", + "validRegex": "/^([0-9])+$/" + },{ + "id": "$$cap_container_port", + "label": "Elasticsearch Container TCP Port", + "defaultValue": "9200", + "description": "Internal port for Elasticsearch the container listens to.", + "validRegex": "/^([0-9])+$/" + } + ] +}