openstack-ansible-ops/grafana/installGrafana.yml
Duncan Martin Walker 1006dab986 Updates to Grafana role
The inclusion of the grafana submodule contradicts the deployment
process in the README, where it is explicitly cloned to
/etc/ansible/roles. The empty folder for the submodule takes
higher precendence than explicit clone, meaning that the grafana
role is found, but contains no tasks. The submodule has been
deleted to stop this.

There are also failures when running behind a proxy in the
traefik-common role, These are now avoided by running the role
with deployment_environment_variables set.

Change-Id: Icc34087e17906c763286b98591bade73fa7c022e
2020-01-07 10:34:25 +00:00

161 lines
5.4 KiB
YAML

---
# Copyright 2016, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# 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
vars_files:
- vars/variables.yml
pre_tasks:
- name: Galera database block
block:
- name: Check for db password
fail:
msg: >-
The database root login user is undefined
when:
- galera_root_user is undefined
- name: Check for db password
fail:
msg: >-
The database root password is undefined
when:
- galera_root_password is undefined
- name: Install PyMySQL
package:
name: python-pymysql
- name: Create DB for service
mysql_db:
login_user: "{{ galera_root_user }}"
login_password: "{{ galera_root_password }}"
login_host: "{{ galera_address | default('127.0.0.1') }}"
name: "{{ grafana_db_name }}"
state: "present"
delegate_to: "{{ groups['galera_all'][0] }}"
- name: Grant access to the DB for the service
mysql_user:
login_user: "{{ galera_root_user }}"
login_password: "{{ galera_root_password }}"
login_host: "{{ galera_address | default('127.0.0.1') }}"
name: "{{ grafana_db_user }}"
password: "{{ grafana_db_password }}"
host: "{{ item }}"
state: "present"
priv: "{{ grafana_db_name }}.*:ALL"
with_items:
- "localhost"
- "%"
delegate_to: "{{ groups['galera_all'][0] }}"
- name: Set grafana database fact
set_fact:
grafana_database:
type: mysql
host: "{{ galera_address }}:3306"
name: "{{ grafana_db_name }}"
user: "{{ grafana_db_user }}"
password: "{{ grafana_db_password }}"
when:
- (groups['galera_all'] | default([])) | length > 0
- name: Ensure https repos function
apt:
pkg: "apt-transport-https"
state: "latest"
roles:
- role: traefik_common
environment: "{{ deployment_environment_variables | default({}) }}"
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