Update grafana, use vendored role, and add es lb
The grafana role will now deploy and setup the grafana datasources using the API as expected. API users will also be created for admin, viewer, editor. The es config for grafana has been udpated to correct issues where the system expected a publically accessible lb to handle grafana traffic back to an es cluster. When the grafana role deploys the traefik lb will now be used within the grafana deployment to ensure grafana is able to deploy against an es cluster. Change-Id: Iae3a5c2ab1b98390110d37f33b074156d32bb684 Signed-off-by: Kevin Carter <kevin@cloudnull.com>
This commit is contained in:
parent
76df66772b
commit
8ee8ec0832
@ -24,12 +24,7 @@ kibana_nginx_port: 81
|
||||
|
||||
# This is the URL external services can use to communicate with the
|
||||
# elasticsearch cluster.
|
||||
elastic_vip_url: >-
|
||||
{% if internal_lb_vip_address is defined %}
|
||||
http://{{ internal_lb_vip_address ~ ':' ~ elastic_hap_port }}
|
||||
{% else %}
|
||||
http://{{ hostvars[groups['kibana'][0]]['ansible_host'] ~ ':' ~ elastic_port }}
|
||||
{% endif %}
|
||||
elastic_vip_url: "http://127.0.0.1:19200"
|
||||
|
||||
# Elasticsearch can query the itself and loadbalance requests across the cluster.
|
||||
# This function is automatically enabled on non-data nodes however this setting
|
||||
|
@ -13,6 +13,62 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
- name: Deploy traefik binaries
|
||||
hosts: grafana_all
|
||||
become: yes
|
||||
vars:
|
||||
traefik_binary_version: "v1.7.7"
|
||||
traefik_binary_url: "https://github.com/containous/traefik/releases/download/{{ traefik_binary_version }}/traefik"
|
||||
traefik_staging_node: "localhost"
|
||||
pre_tasks:
|
||||
- name: Create traefik temp path
|
||||
file:
|
||||
path: "/tmp/traefik/{{ ansible_architecture }}"
|
||||
state: directory
|
||||
delegate_to: "{{ traefik_staging_node }}"
|
||||
become: false
|
||||
tasks:
|
||||
- name: Built traefik installation
|
||||
block:
|
||||
- name: Find traefik binaries
|
||||
find:
|
||||
paths: "/tmp/traefik/{{ ansible_architecture }}/"
|
||||
recurse: no
|
||||
patterns: "*traefik*"
|
||||
register: files_to_copy
|
||||
delegate_to: "{{ traefik_staging_node }}"
|
||||
run_once: true
|
||||
become: false
|
||||
- name: Install built traefik
|
||||
copy:
|
||||
src: "{{ item.path }}"
|
||||
dest: "/usr/local/bin/{{ item.path | basename }}"
|
||||
mode: "0755"
|
||||
with_items: "{{ files_to_copy.files }}"
|
||||
when:
|
||||
- ((groups['traefik_build_nodes'] | default([])) | length) > 0
|
||||
|
||||
- name: Upstream traefik installation
|
||||
block:
|
||||
- name: Get traefik binary
|
||||
get_url:
|
||||
url: "{{ traefik_binary_url }}"
|
||||
dest: "/tmp/traefik/{{ ansible_architecture }}/{{ traefik_binary_url | basename }}"
|
||||
mode: '0755'
|
||||
delegate_to: "{{ traefik_staging_node }}"
|
||||
run_once: true
|
||||
become: false
|
||||
- name: Install binary traefik
|
||||
copy:
|
||||
src: "/tmp/traefik/{{ ansible_architecture }}/{{ traefik_binary_url | basename }}"
|
||||
dest: "/usr/local/bin/traefik"
|
||||
mode: "0755"
|
||||
when:
|
||||
- ((groups['traefik_build_nodes'] | default([])) | length) < 1
|
||||
tags:
|
||||
- traefik-install
|
||||
|
||||
|
||||
- name: Deploy Grafana
|
||||
hosts: grafana_all
|
||||
become: true
|
||||
@ -81,4 +137,23 @@
|
||||
state: "latest"
|
||||
|
||||
roles:
|
||||
- role: traefik_common
|
||||
traffic_dashboard_bind: "{{ hostvars[inventory_hostname]['ansible_' ~ (ansible_default_ipv4['interface'] | replace('-', '_') | string)]['ipv4']['address'] }}"
|
||||
traefik_dashboard_enabled: true
|
||||
traefik_destinations:
|
||||
elasticsearch:
|
||||
proto: "http"
|
||||
port: "19200"
|
||||
bind: "127.0.0.1"
|
||||
servers: |-
|
||||
{% set nodes = [] %}
|
||||
{% for target in groups['kibana'] %}
|
||||
{% set node = {} %}
|
||||
{% set _ = node.__setitem__('name', 'elasticsearch' ~ loop.index) %}
|
||||
{% set _ = node.__setitem__('address', hostvars[target]['ansible_host']) %}
|
||||
{% set _ = node.__setitem__('weight', (100 - loop.index)) %}
|
||||
{% set _ = node.__setitem__('port', "9200") %}
|
||||
{% set _ = nodes.append(node) %}
|
||||
{% endfor %}
|
||||
{{ nodes }}
|
||||
- role: grafana
|
||||
|
1
grafana/roles/grafana
Submodule
1
grafana/roles/grafana
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 4f23cfe48054792f0c84255b64dbe09a82744e20
|
1
grafana/roles/make_traefik
Symbolic link
1
grafana/roles/make_traefik
Symbolic link
@ -0,0 +1 @@
|
||||
../../skydive/roles/make_traefik
|
1
grafana/roles/traefik_common
Symbolic link
1
grafana/roles/traefik_common
Symbolic link
@ -0,0 +1 @@
|
||||
../../skydive/roles/traefik_common
|
@ -36,11 +36,13 @@ logLevel = "INFO"
|
||||
[entryPoints.traefik]
|
||||
address = "{{ traffic_dashboard_bind }}:{{ traefik_dashboard_port }}"
|
||||
{% if traefik_dashboard_enabled | bool %}
|
||||
{% if traefik_basic_auth_users %}
|
||||
[entryPoints.traefik.auth]
|
||||
[entryPoints.traefik.auth.basic]
|
||||
removeHeader = true
|
||||
usersFile = "{{ traefik_basic_auth_file }}"
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% for key, value in traefik_destinations.items() %}
|
||||
[entryPoints.{{ key }}-{{ value.proto }}]
|
||||
|
Loading…
Reference in New Issue
Block a user