---
- name: Check Grafana has install
  yum:
    list: "{{ grafana_version.split('-')[0] }}"
  register: install_check

- name: Install Grafana
  yum:
    name: "{{ grafana_package_url }}"
    state: present
    disable_gpg_check: true
  when: install_check.results | length() != 1

- name: Create Dependence Directory
  file:
    path: "{{ item }}"
    state: directory
    owner: grafana
    group: grafana
    mode: 0755
  with_items:
    - "{{ grafana_home }}"
    - "{{ grafana_home }}/data"
    - "{{ grafana_home }}/logs"
    - "{{ grafana_home }}/plugins"

- name: Template Grafana Conf
  template:
    src: grafana.ini.j2
    dest: /etc/grafana/grafana.ini
    owner: grafana
    group: grafana
    mode: 0755
  notify:
    - restart grafana

- meta: flush_handlers

- name: Create grafana API Key
  uri:
    url: "http://{{ ansible_host }}:{{ grafana_http_port }}/api/auth/keys"
    user: "{{ grafana_admin_user }}"
    password: "{{ grafana_admin_password }}"
    force_basic_auth: yes
    method: POST
    body_format: json
    body: "{\"role\": \"Admin\", \"name\": \"{{ randomStr }}\", \"secondsToLive\": 60}"
  register: api_user

- name: Check Prometheus DataSource is exists
  uri:
    url: "http://{{ ansible_host }}:{{ grafana_http_port }}/api/datasources/{{ datasource_name}}"
    force_basic_auth: yes
    validate_certs: no
    method: GET
    headers:
      Authorization: "Bearer {{ api_user['json']['key'] }}"
  ignore_errors: True
  register: check_datasource_res
  when:
    - api_user['json'] | length != 0

- name: Create Prometheus DataSource
  uri:
    url: "http://{{ ansible_host }}:{{ grafana_http_port }}/api/datasources"
    force_basic_auth: yes
    validate_certs: no
    method: POST
    body_format: json
    body: "{{ datasource_body | to_json }}"
    headers:
      Authorization: "Bearer {{ api_user['json']['key'] }}"
  ignore_errors: True
  when:
   - check_datasource_res['status'] != 200
   - api_user['json'] | length != 0

- name: Template Prometheus Dashboard
  copy:
    src: dashboard_template.json
    dest: "{{ dashboard_template }}"
    mode: 0755
  ignore_errors: True
  register: copy_dashboard_template_res

- name: Check {{ dashboard_template }} exists
  wait_for:
    path: "{{ dashboard_template }}"

- name: Change template dashboard name
  replace:
    path: "{{ dashboard_template }}"
    regexp: "change_dashboard_name"
    replace: "{{ dashboard_name }}"
    backup: yes
    owner: root
    mode: 0755
    group: root


- name: Change template datasource name
  replace:
    path: "{{ dashboard_template }}"
    regexp: "change_datasource_name"
    replace: "{{ datasource_name }}"
    owner: root
    group: root
    mode: 0755
    backup: yes

- name: Create Prometheus Dashboard 
  uri:
    url: "http://{{ ansible_host }}:{{ grafana_http_port }}/api/dashboards/db"
    force_basic_auth: yes
    validate_certs: no
    method: POST
    body: "{{ lookup('file', item) }}"
    body_format: json
    headers:
      Authorization: "Bearer {{ api_user['json']['key'] }}"
  ignore_errors: True
  with_items:
    - "{{ dashboard_template }}"

Copyright & TianCiwang 2021 all right reserved,powered by Gitbook修改时间: 2021-11-17 16:59:59

results matching ""

    No results matching ""

    results matching ""

      No results matching ""