From f2b6665f2791b93a595b0c5695a0ee5cc1e1892a Mon Sep 17 00:00:00 2001 From: Simon Pasquier Date: Mon, 17 Jul 2017 12:12:53 +0200 Subject: [PATCH] Support InfluxDB in container This changes updates the formula to support the deployment of InfluxDB as a container (eg Docker Swarm). Change-Id: I5e815109987f928024f05cdaa99de6f558866174 --- influxdb/init.sls | 1 - influxdb/map.jinja | 4 ++-- influxdb/server.sls | 23 +++++++++++++++++++---- metadata/service/server/container.yml | 15 +++++++++++++++ 4 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 metadata/service/server/container.yml diff --git a/influxdb/init.sls b/influxdb/init.sls index c4499cc..9d0eeb9 100644 --- a/influxdb/init.sls +++ b/influxdb/init.sls @@ -1,4 +1,3 @@ - {% if pillar.influxdb.server is defined %} include: - influxdb.server diff --git a/influxdb/map.jinja b/influxdb/map.jinja index 974c839..c9a0419 100644 --- a/influxdb/map.jinja +++ b/influxdb/map.jinja @@ -1,10 +1,10 @@ - - {%- load_yaml as base_defaults %} default: pkgs: - influxdb service: influxdb + container_mode: false + prefix_dir: / reporting_disabled: true http: enabled: true diff --git a/influxdb/server.sls b/influxdb/server.sls index 30899fc..fb5bcf5 100644 --- a/influxdb/server.sls +++ b/influxdb/server.sls @@ -2,18 +2,30 @@ {%- if server.enabled %} +{%- if not server.container_mode %} influxdb_packages: pkg.installed: - names: {{ server.pkgs }} +{%- endif %} + +{{ server.prefix_dir }}/etc/influxdb: + file.directory: + - user: root + - group: root + - mode: 755 + - makedirs: True influxdb_config: file.managed: - - name: /etc/influxdb/influxdb.conf + - name: {{ server.prefix_dir }}/etc/influxdb/influxdb.conf - source: salt://influxdb/files/influxdb.conf - template: jinja +{%- if not server.container_mode %} - require: - pkg: influxdb_packages +{%- endif %} +{%- if not server.container_mode %} influxdb_default: file.managed: - name: /etc/default/influxdb @@ -21,6 +33,7 @@ influxdb_default: - template: jinja - require: - pkg: influxdb_packages +{%- endif %} influxdb_service: service.running: @@ -29,17 +42,19 @@ influxdb_service: # This delay is needed before being able to send data to server to create # users and databases. - init_delay: 5 - {%- if grains.get('noservices') %} +{%- if grains.get('noservices') or server.container_mode %} - onlyif: /bin/false - {%- endif %} +{%- endif %} - watch: - file: influxdb_config +{%- if not server.container_mode %} - file: influxdb_default +{%- endif %} {% set url_for_query = "http://{}:{}/query".format(server.http.bind.address, server.http.bind.port) %} {% set admin_created = false %} -{%- if server.admin.get('user', {}).get('enabled', False) %} +{%- if not server.container_mode and server.admin.get('user', {}).get('enabled', False) %} {% set query_create_admin = "--data-urlencode \"q=CREATE USER {} WITH PASSWORD '{}' WITH ALL PRIVILEGES\"".format(server.admin.user.name, server.admin.user.password) %} {% set admin_url = "http://{}:{}/query?u={}&p={}".format(server.http.bind.address, server.http.bind.port, server.admin.user.name, server.admin.user.password) %} influxdb_create_admin: diff --git a/metadata/service/server/container.yml b/metadata/service/server/container.yml new file mode 100644 index 0000000..aec2b3e --- /dev/null +++ b/metadata/service/server/container.yml @@ -0,0 +1,15 @@ +applications: +- influxdb +classes: +- service.influxdb.support +parameters: + influxdb: + server: + enabled: true + container_mode: true + admin: + bind: + address: 0.0.0.0 + http: + bind: + address: 0.0.0.0 -- 2.32.7