From 3886bfb5eb9e08bb5de61b1314c6cae1be3e5530 Mon Sep 17 00:00:00 2001 From: Daniel Hunsaker Date: Sat, 31 Mar 2018 05:17:25 -0600 Subject: [PATCH] [Nanobox] Enable ElasticSearch support by default (#6977) Admins can still disable the feature by adding `ES_ENABLED=false` to their environment, if they prefer not to use it. Be sure to set the variable before you deploy! --- .env.nanobox | 6 +++--- boxfile.yml | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/.env.nanobox b/.env.nanobox index 0d14f8a005..8e0af6a8a8 100644 --- a/.env.nanobox +++ b/.env.nanobox @@ -14,9 +14,9 @@ DB_PORT=5432 DATABASE_URL=postgresql://$DATA_DB_USER:$DATA_DB_PASS@$DATA_DB_HOST/gonano # Optional ElasticSearch configuration -# ES_ENABLED=true -# ES_HOST=localhost -# ES_PORT=9200 +ES_ENABLED=true +ES_HOST=$DATA_ELASTIC_HOST +ES_PORT=9200 # Optimizations LD_PRELOAD=/data/lib/libjemalloc.so diff --git a/boxfile.yml b/boxfile.yml index aa2003a1b7..9368a7d9db 100644 --- a/boxfile.yml +++ b/boxfile.yml @@ -61,6 +61,11 @@ deploy.config: before_live: web.web: - bundle exec rake db:migrate:setup + - |- + if [[ "${ES_ENABLED}" != "false" ]] + then + bundle exec rake chewy:deploy + fi web.web: @@ -208,6 +213,32 @@ data.db: done +data.elastic: + image: nanobox/elasticsearch:5 + + cron: + - id: backup + schedule: '0 3 * * *' + command: | + id=$(cat /proc/sys/kernel/random/uuid) + curl -X PUT -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}" -d "{\"type\": \"fs\",\"settings\": {\"location\": \"/var/tmp/${id}\",\"compress\": true}}" + curl -X PUT -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}/backup?wait_for_completion=true&pretty" + tar -cz -C "/var/tmp/${id}" . | + curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/backup-${HOSTNAME}-$(date -u +%Y-%m-%d.%H-%M-%S).tgz -X POST -T - >&2 + curl -X DELETE -H "Content-Type: application/json" "127.0.0.1:9200/_snapshot/${id}" + rm -rf "/var/tmp/${id}" + curl -k -s -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/ | + sed 's/,/\n/g' | + grep ${HOSTNAME} | + sort | + head -n-${BACKUP_COUNT:-1} | + sed 's/.*: \?"\(.*\)".*/\1/' | + while read file + do + curl -k -H "X-AUTH-TOKEN: ${WAREHOUSE_DATA_HOARDER_TOKEN}" https://${WAREHOUSE_DATA_HOARDER_HOST}:7410/blobs/${file} -X DELETE + done + + data.redis: image: nanobox/redis:4.0