#!/usr/bin/ansible-playbook # vim:ft=ansible: --- - name: Install, configure, and start Grafana block: - name: Set up PostgreSQL block: - name: Create DB user postgresql_user: name: grafana password: "{{ grafana.db.pass }}" login_host: "{{ grafana.db.hostname }}" login_user: "{{ psql.ansible.user }}" login_password: "{{ psql.ansible.pass }}" - name: Create DB postgresql_db: name: grafana owner: grafana encoding: UNICODE login_host: "{{ grafana.db.hostname }}" login_user: "{{ psql.ansible.user }}" login_password: "{{ psql.ansible.pass }}" tags: [ postgresql ] - name: Configure Grafana block: - name: Create configuration directories file: path: "{{ item }}" state: directory loop: - /etc/grafana - /etc/grafana/provisioning - name: Template out main config template: src: "grafana.ini" dest: "/etc/grafana/grafana.ini" mode: "0640" notify: restart grafana - name: Clone configuration repo git: repo: "{{ grafana.config_repo }}" dest: "/etc/grafana/provisioning" force: yes notify: restart grafana when: grafana.config_repo is defined - name: Add and configure packages block: - name: Add APT signing key apt_key: url: "https://packages.grafana.com/gpg.key" - name: Add APT repo apt_repository: repo: "deb https://packages.grafana.com/oss/deb stable main" - name: Install Grafana apt: name: - grafana - name: Enable Grafana systemd: daemon_reload: yes name: "grafana-server.service" enabled: yes state: "started" - name: Set up Apache block: - name: Enable modules command: cmd: a2enmod "{{ item }}" creates: "/etc/apache2/mods-enabled/{{ item }}.load" loop: - proxy - proxy_http notify: restart apache - name: Template out vhost template: src: "apache2-vhost-ssl.conf" dest: "/etc/apache2/sites-available/{{ grafana.url }}.conf" notify: restart apache - name: Create webroot file: state: directory path: "{{ grafana.webroot }}" - name: Enable site command: cmd: "a2ensite {{ grafana.url }}.conf" creates: "/etc/apache2/sites-enabled/{{ grafana.url }}.conf" notify: restart apache - name: Generate certificate include_role: name: https vars: website_url: "{{ grafana.url }}" become: yes