From 347937ad46332eddbfa2e5c39cd29e27917faecd Mon Sep 17 00:00:00 2001 From: George Robinson Date: Fri, 22 Apr 2016 13:35:04 +0100 Subject: [PATCH] Separate consul and consul-template states Break up the consul formula into two states: consul and consul-template such that it is possible to install consul without consul-template. Update consul and consul-template to 0.6.4 and 0.14.0 respectively. Consul template can now be configured with pillars. --- consul-template/config.sls | 22 +++++++++ consul-template/defaults.yaml | 15 ++++++ consul-template/files/config.json | 2 + .../files/consul-template.service | 2 +- consul-template/files/example.tmpl | 1 + consul-template/init.sls | 7 +++ consul-template/install.sls | 46 ++++++++++++++++++ consul-template/map.jinja | 3 ++ consul-template/service.sls | 21 +++++++++ consul/config.sls | 8 +--- consul/defaults.yaml | 9 ---- consul/files/consul-template-config.json | 2 - consul/files/consul.service | 2 +- consul/install.sls | 47 +------------------ consul/map.jinja | 1 - consul/service.sls | 14 +----- 16 files changed, 122 insertions(+), 80 deletions(-) create mode 100644 consul-template/config.sls create mode 100644 consul-template/defaults.yaml create mode 100644 consul-template/files/config.json rename {consul => consul-template}/files/consul-template.service (91%) create mode 100644 consul-template/files/example.tmpl create mode 100644 consul-template/init.sls create mode 100644 consul-template/install.sls create mode 100644 consul-template/map.jinja create mode 100644 consul-template/service.sls delete mode 100644 consul/files/consul-template-config.json diff --git a/consul-template/config.sls b/consul-template/config.sls new file mode 100644 index 0000000..6fad67b --- /dev/null +++ b/consul-template/config.sls @@ -0,0 +1,22 @@ +{% from "consul-template/map.jinja" import consul_template with context %} + +consul-template-config: + file.managed: + - source: salt://consul-template/files/config.json + - template: jinja + - name: /etc/consul-template.d/config.json + +{% if consul_template.tmpl %} +{% for tmpl in consul_template.tmpl %} +consul-template-tmpl-file-{{ loop.index }}: + file.managed: + - source: {{ tmpl.source }} + - name: /etc/consul-template/tmpl-source/{{ tmpl.name }}.ctmpl + +consul-template.d-tmpl-{{ loop.index }}: + file.serialize: + - name: /etc/consul-template.d/{{ tmpl.name }}.json + - dataset: {{ tmpl.config }} + - formatter: json +{% endfor %} +{% endif %} diff --git a/consul-template/defaults.yaml b/consul-template/defaults.yaml new file mode 100644 index 0000000..c91a4db --- /dev/null +++ b/consul-template/defaults.yaml @@ -0,0 +1,15 @@ +consul_template: + version: 0.14.0 + hash: 7c70ea5f230a70c809333e75fdcff2f6f1e838f29cfb872e1420a63cdf7f3a78 + + service: false + config: + consul: 127.0.0.1:8500 + log_level: info + tmpl: + - name: example + source: salt://consul-template/files/example.tmpl + config: + template: + source: /etc/consul-template/tmpl-source/example.ctmpl + destination: /etc/consul-template/example diff --git a/consul-template/files/config.json b/consul-template/files/config.json new file mode 100644 index 0000000..9d4975b --- /dev/null +++ b/consul-template/files/config.json @@ -0,0 +1,2 @@ +{% from "consul-template/map.jinja" import consul_template with context %} +{{ consul_template.config | json }} diff --git a/consul/files/consul-template.service b/consul-template/files/consul-template.service similarity index 91% rename from consul/files/consul-template.service rename to consul-template/files/consul-template.service index 75e97c5..3abe82f 100644 --- a/consul/files/consul-template.service +++ b/consul-template/files/consul-template.service @@ -10,4 +10,4 @@ ExecReload=/bin/kill -HUP $MAINPID KillSignal=TERM [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=multi-user.target diff --git a/consul-template/files/example.tmpl b/consul-template/files/example.tmpl new file mode 100644 index 0000000..ac67c51 --- /dev/null +++ b/consul-template/files/example.tmpl @@ -0,0 +1 @@ +{{with node}}{{.Node.Node}}{{end}} diff --git a/consul-template/init.sls b/consul-template/init.sls new file mode 100644 index 0000000..fa3b68c --- /dev/null +++ b/consul-template/init.sls @@ -0,0 +1,7 @@ +{% from "consul-template/map.jinja" import consul with context %} + +include: + - consul + - consul-template.install + - consul-template.config + - consul-template.service diff --git a/consul-template/install.sls b/consul-template/install.sls new file mode 100644 index 0000000..2185847 --- /dev/null +++ b/consul-template/install.sls @@ -0,0 +1,46 @@ +{% from "consul-template/map.jinja" import consul_template with context %} + +consul-template-config-dir: + file.directory: + - name: /etc/consul-template.d + +consul-template-template-dir: + file.directory: + - name: /etc/consul-template/tmpl-source + - makedirs: True + +# Install template renderer +consul-template-download: + file.managed: + - name: /tmp/consul_template_{{ consul_template.version }}_linux_amd64.zip + - source: https://releases.hashicorp.com/consul-template/{{ consul_template.version }}/consul-template_{{ consul_template.version }}_linux_amd64.zip + - source_hash: sha256={{ consul_template.hash }} + - unless: test -f /usr/local/bin/consul-template-{{ consul_template.version }} + +consul-template-extract: + cmd.wait: + - name: unzip /tmp/consul_template_{{ consul_template.version }}_linux_amd64.zip -d /tmp + - watch: + - file: consul-template-download + +consul-template-install: + file.rename: + - name: /usr/local/bin/consul-template-{{ consul_template.version }} + - source: /tmp/consul-template + - require: + - file: /usr/local/bin + - watch: + - cmd: consul-template-extract + +consul-template-clean: + file.absent: + - name: /tmp/consul_template_{{ consul_template.version }}_linux_amd64.zip + - watch: + - file: consul-template-install + +consul-template-link: + file.symlink: + - target: consul-template-{{ consul_template.version }} + - name: /usr/local/bin/consul-template + - watch: + - file: consul-template-install diff --git a/consul-template/map.jinja b/consul-template/map.jinja new file mode 100644 index 0000000..fc2e0cb --- /dev/null +++ b/consul-template/map.jinja @@ -0,0 +1,3 @@ +{% import_yaml "consul-template/defaults.yaml" as defaults %} + +{% set consul_template = salt['pillar.get']('consul_template', default=defaults.consul_template, merge=True) %} diff --git a/consul-template/service.sls b/consul-template/service.sls new file mode 100644 index 0000000..022c5c7 --- /dev/null +++ b/consul-template/service.sls @@ -0,0 +1,21 @@ +{% from "consul-template/map.jinja" import consul_template with context %} + +consul-template-init-script: + file.managed: + {% if salt['test.provider']('service') == 'systemd' %} + - source: salt://consul-template/files/consul-template.service + - name: /etc/systemd/system/consul-template.service + - mode: 0644 + {% endif %} + {% if consul_template.service != False %} + - watch_in: + - service: consul + {% endif %} + +{% if consul_template.service != False %} +consul-template-service: + service.running: + - name: consul-template + - watch: + - file: /etc/consul-template.d/* +{% endif %} diff --git a/consul/config.sls b/consul/config.sls index 2077c9f..1525cde 100644 --- a/consul/config.sls +++ b/consul/config.sls @@ -1,4 +1,4 @@ -{% from "consul/map.jinja" import consul, consul_template with context %} +{% from "consul/map.jinja" import consul with context %} consul-config: file.managed: @@ -38,9 +38,3 @@ consul-script-config: - group: consul - require: - user: consul - -consul-template-config: - file.managed: - - source: salt://consul/files/consul-template-config.json - - template: jinja - - name: /etc/consul-template.d/config.json diff --git a/consul/defaults.yaml b/consul/defaults.yaml index d4441ef..429f4f7 100644 --- a/consul/defaults.yaml +++ b/consul/defaults.yaml @@ -19,12 +19,3 @@ consul: datacenter: "main" register: [] scripts: [] - -consul_template: - version: 0.12.1 - hash: 693c52a2b1aed9b63584f47c377efd0fc349df3616985a0709246faaf9a80c8e - - service: false - config: - consul: 127.0.0.1:8500 - log_level: info diff --git a/consul/files/consul-template-config.json b/consul/files/consul-template-config.json deleted file mode 100644 index 39b1c99..0000000 --- a/consul/files/consul-template-config.json +++ /dev/null @@ -1,2 +0,0 @@ -{% from "consul/map.jinja" import consul_template with context %} -{{ consul_template.config | json}} \ No newline at end of file diff --git a/consul/files/consul.service b/consul/files/consul.service index f8d48cc..ecc2775 100644 --- a/consul/files/consul.service +++ b/consul/files/consul.service @@ -11,4 +11,4 @@ KillSignal=TERM User=consul [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=multi-user.target diff --git a/consul/install.sls b/consul/install.sls index fd26496..0515edf 100644 --- a/consul/install.sls +++ b/consul/install.sls @@ -1,4 +1,4 @@ -{% from "consul/map.jinja" import consul, consul_template with context %} +{% from "consul/map.jinja" import consul with context %} consul-dep-unzip: pkg.installed: @@ -42,15 +42,6 @@ consul-data-dir: - group: consul - makedirs: -consul-template-config-dir: - file.directory: - - name: /etc/consul-template.d - -consul-template-template-dir: - file.directory: - - name: /etc/consul-template/tmpl-source - - makedirs: True - # Install agent consul-download: file.managed: @@ -122,39 +113,3 @@ consul-ui-link: - name: /usr/local/share/consul/ui - watch: - file: consul-ui-install - -# Install template renderer -consul-template-download: - file.managed: - - name: /tmp/consul_template_{{ consul_template.version }}_linux_amd64.zip - - source: https://releases.hashicorp.com/consul-template/{{ consul_template.version }}/consul-template_{{ consul_template.version }}_linux_amd64.zip - - source_hash: sha256={{ consul_template.hash }} - - unless: test -f /usr/local/bin/consul-template-{{ consul_template.version }} - -consul-template-extract: - cmd.wait: - - name: unzip /tmp/consul_template_{{ consul_template.version }}_linux_amd64.zip -d /tmp - - watch: - - file: consul-template-download - -consul-template-install: - file.rename: - - name: /usr/local/bin/consul-template-{{ consul_template.version }} - - source: /tmp/consul-template - - require: - - file: /usr/local/bin - - watch: - - cmd: consul-template-extract - -consul-template-clean: - file.absent: - - name: /tmp/consul_template_{{ consul_template.version }}_linux_amd64.zip - - watch: - - file: consul-template-install - -consul-template-link: - file.symlink: - - target: consul-template-{{ consul_template.version }} - - name: /usr/local/bin/consul-template - - watch: - - file: consul-template-install diff --git a/consul/map.jinja b/consul/map.jinja index 21fcfea..b9efe6d 100644 --- a/consul/map.jinja +++ b/consul/map.jinja @@ -1,6 +1,5 @@ {% import_yaml "consul/defaults.yaml" as defaults %} {% set consul = salt['pillar.get']('consul', default=defaults.consul, merge=True) %} -{% set consul_template = salt['pillar.get']('consul_template', default=defaults.consul_template, merge=True) %} {% do consul.config.update({'retry_join': consul.config.retry_join or []}) %} diff --git a/consul/service.sls b/consul/service.sls index 54b5e88..d18ce87 100644 --- a/consul/service.sls +++ b/consul/service.sls @@ -1,4 +1,4 @@ -{% from "consul/map.jinja" import consul, consul_template with context %} +{% from "consul/map.jinja" import consul with context %} consul-init-script: file.managed: @@ -20,18 +20,6 @@ consul-init-script: - service: consul {% endif %} -consul-template-init-script: - file.managed: - {% if salt['test.provider']('service') == 'systemd' %} - - source: salt://consul/files/consul-template.service - - name: /etc/systemd/system/consul-template.service - - mode: 0644 - {% endif %} - {% if consul_template.service != False %} - - watch_in: - - service: consul - {% endif %} - {% if consul.service != False %} consul-service: service.running: