From 17dd0fddffe5b9b2638055ef057685a43b1061da Mon Sep 17 00:00:00 2001 From: Freazzzing <ссс999.11@mail.ru> Date: Wed, 4 Feb 2026 02:28:50 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA?= =?UTF-8?q?=D0=B0=20Grafana:=20=D1=80=D0=BE=D0=BB=D0=B8,=20=D0=BF=D0=BB?= =?UTF-8?q?=D0=B5=D0=B9=D0=B1=D1=83=D0=BA=D0=B8=20=D0=B8=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inventories/production/hosts | 3 + playbooks/monitoring/check_grafana.yml | 47 ++++++ playbooks/monitoring/cleanup_grafana.yml | 55 +++++++ playbooks/monitoring/install_grafana.yml | 9 ++ .../monitoring/install_grafana_final.yml | 47 ++++++ roles/grafana.backup/defaults/main.yml | 4 + roles/grafana.backup/handlers/main.yml | 6 + roles/grafana.backup/tasks/main.yml | 142 ++++++++++++++++++ .../grafana.backup/tasks/wait_and_verify.yml | 68 +++++++++ roles/grafana.backup/templates/grafana.ini.j2 | 27 ++++ .../templates/grafana.service.j2 | 24 +++ roles/grafana/defaults/main.yml | 4 + roles/grafana/handlers/main.yml | 6 + roles/grafana/tasks/main.yml | 142 ++++++++++++++++++ roles/grafana/tasks/wait_and_verify.yml | 110 ++++++++++++++ roles/grafana/templates/grafana.ini.j2 | 27 ++++ roles/grafana/templates/grafana.service.j2 | 24 +++ 17 files changed, 745 insertions(+) create mode 100644 playbooks/monitoring/check_grafana.yml create mode 100644 playbooks/monitoring/cleanup_grafana.yml create mode 100644 playbooks/monitoring/install_grafana.yml create mode 100644 playbooks/monitoring/install_grafana_final.yml create mode 100644 roles/grafana.backup/defaults/main.yml create mode 100644 roles/grafana.backup/handlers/main.yml create mode 100644 roles/grafana.backup/tasks/main.yml create mode 100644 roles/grafana.backup/tasks/wait_and_verify.yml create mode 100644 roles/grafana.backup/templates/grafana.ini.j2 create mode 100644 roles/grafana.backup/templates/grafana.service.j2 create mode 100644 roles/grafana/defaults/main.yml create mode 100644 roles/grafana/handlers/main.yml create mode 100644 roles/grafana/tasks/main.yml create mode 100644 roles/grafana/tasks/wait_and_verify.yml create mode 100644 roles/grafana/templates/grafana.ini.j2 create mode 100644 roles/grafana/templates/grafana.service.j2 diff --git a/inventories/production/hosts b/inventories/production/hosts index 4a8ba37..1f9b6b8 100644 --- a/inventories/production/hosts +++ b/inventories/production/hosts @@ -24,3 +24,6 @@ ansible_ssh_private_key_file=~/.ssh/id_ansible [all_except_ansible:children] infrastructure applications + +[grafana] +192.168.0.106 # pvestandt1-grafana diff --git a/playbooks/monitoring/check_grafana.yml b/playbooks/monitoring/check_grafana.yml new file mode 100644 index 0000000..09421e0 --- /dev/null +++ b/playbooks/monitoring/check_grafana.yml @@ -0,0 +1,47 @@ +--- +- name: Check Grafana installation status + hosts: grafana + become: yes + tasks: + - name: Check Grafana service + systemd: + name: grafana + register: service_status + + - name: Check if Grafana is listening on port + wait_for: + port: 3000 + host: 127.0.0.1 + timeout: 10 + state: started + register: port_status + + - name: Check Grafana API health + uri: + url: "http://localhost:3000/api/health" + method: GET + status_code: 200 + timeout: 10 + register: api_status + ignore_errors: yes + + - name: Get Grafana version + command: /usr/local/bin/grafana-server --version + register: version_info + changed_when: false + ignore_errors: yes + + - name: Display Grafana status report + debug: + msg: | + 📊 Статус Grafana на {{ inventory_hostname }}: + + Служба: {{ "✅ Запущена" if service_status.status.ActiveState == "active" else "❌ Остановлена" }} + Порт 3000: {{ "✅ Открыт" if port_status.state == "started" else "❌ Закрыт" }} + API: {{ "✅ Доступен (HTTP " ~ api_status.status ~ ")" if api_status.status == 200 else "❌ Недоступен" }} + + {% if version_info is succeeded %} + Версия: {{ version_info.stdout_lines[-1] | regex_search('Version ([0-9.]+)') | default('Неизвестна') }} + {% else %} + Версия: Не удалось определить + {% endif %} diff --git a/playbooks/monitoring/cleanup_grafana.yml b/playbooks/monitoring/cleanup_grafana.yml new file mode 100644 index 0000000..6e068f6 --- /dev/null +++ b/playbooks/monitoring/cleanup_grafana.yml @@ -0,0 +1,55 @@ +--- +- name: Clean up Grafana completely + hosts: grafana + become: yes + tasks: + - name: Stop and disable Grafana service + systemd: + name: grafana + state: stopped + enabled: no + daemon_reload: yes + ignore_errors: yes + + - name: Remove systemd service file + file: + path: /etc/systemd/system/grafana.service + state: absent + + - name: Remove symlinks + file: + path: "{{ item }}" + state: absent + loop: + - /usr/local/bin/grafana-server + - /usr/local/bin/grafana-cli + + - name: Remove Grafana directories + file: + path: "{{ item }}" + state: absent + loop: + - /usr/share/grafana + - /usr/share/grafana-* + - /var/lib/grafana + - /var/log/grafana + - /etc/grafana + + - name: Remove temporary files + file: + path: /tmp/grafana-*.tar.gz + state: absent + + - name: Remove Grafana user and group + user: + name: grafana + state: absent + remove: yes + + - name: Reload systemd + systemd: + daemon_reload: yes + + - name: Verify cleanup + debug: + msg: "✅ Grafana полностью удалена с хоста {{ inventory_hostname }}" diff --git a/playbooks/monitoring/install_grafana.yml b/playbooks/monitoring/install_grafana.yml new file mode 100644 index 0000000..62ff539 --- /dev/null +++ b/playbooks/monitoring/install_grafana.yml @@ -0,0 +1,9 @@ +--- +- name: Install and configure Grafana + hosts: grafana + become: yes + vars: + grafana_version: "12.3.2" + grafana_admin_password: "admin" + roles: + - grafana diff --git a/playbooks/monitoring/install_grafana_final.yml b/playbooks/monitoring/install_grafana_final.yml new file mode 100644 index 0000000..11251a6 --- /dev/null +++ b/playbooks/monitoring/install_grafana_final.yml @@ -0,0 +1,47 @@ +--- +- name: Install and configure Grafana (with health checks) + hosts: grafana + become: yes + vars: + grafana_version: "12.3.2" + grafana_admin_password: "admin" + + tasks: + - name: Include Grafana role + include_role: + name: grafana + + - name: Final verification from control node + delegate_to: localhost + run_once: yes + block: + - name: Wait for Grafana to be fully ready + pause: + seconds: 30 + prompt: "Waiting for Grafana to complete initialization..." + + - name: Test Grafana access from control node + uri: + url: "http://{{ hostvars[groups['grafana'][0]]['ansible_default_ipv4']['address'] | default(groups['grafana'][0]) }}:3000/api/health" + method: GET + status_code: 200 + timeout: 30 + register: final_check + until: final_check.status == 200 + retries: 12 # 12 попыток * 5 секунд = 60 секунд + delay: 5 + + - name: Display final success message + debug: + msg: | + 🎉 Grafana успешно установлена и готова к работе! + + Доступ по адресу: http://{{ hostvars[groups['grafana'][0]]['ansible_default_ipv4']['address'] | default(groups['grafana'][0]) }}:3000 + Логин: admin + Пароль: {{ grafana_admin_password }} + + Для проверки выполните команду: + curl http://{{ hostvars[groups['grafana'][0]]['ansible_default_ipv4']['address'] | default(groups['grafana'][0]) }}:3000/api/health + + Или откройте в браузере: + http://{{ hostvars[groups['grafana'][0]]['ansible_default_ipv4']['address'] | default(groups['grafana'][0]) }}:3000 diff --git a/roles/grafana.backup/defaults/main.yml b/roles/grafana.backup/defaults/main.yml new file mode 100644 index 0000000..fbfef71 --- /dev/null +++ b/roles/grafana.backup/defaults/main.yml @@ -0,0 +1,4 @@ +--- +grafana_admin_password: "admin" +grafana_version: "12.3.2" +grafana_archive_type: "tar.gz" # или "zip" diff --git a/roles/grafana.backup/handlers/main.yml b/roles/grafana.backup/handlers/main.yml new file mode 100644 index 0000000..27972db --- /dev/null +++ b/roles/grafana.backup/handlers/main.yml @@ -0,0 +1,6 @@ +--- +- name: restart grafana + systemd: + name: grafana + state: restarted + daemon_reload: yes diff --git a/roles/grafana.backup/tasks/main.yml b/roles/grafana.backup/tasks/main.yml new file mode 100644 index 0000000..ba83059 --- /dev/null +++ b/roles/grafana.backup/tasks/main.yml @@ -0,0 +1,142 @@ +--- +- name: Debug - Show Grafana version + debug: + msg: "Устанавливаем Grafana версии {{ grafana_version }}" + tags: grafana + +- name: Install minimal dependencies + apt: + name: + - curl + - adduser + - libfontconfig1 + - tar + - gzip + - procps + state: present + update_cache: yes + tags: grafana + +- name: Create Grafana user and group + user: + name: grafana + system: yes + shell: /bin/false + home: /usr/share/grafana + comment: "Grafana Server" + tags: grafana + +- name: Create Grafana data/log/config directories + file: + path: "{{ item }}" + state: directory + owner: grafana + group: grafana + mode: '0755' + loop: + - /var/lib/grafana + - /var/log/grafana + - /etc/grafana + tags: grafana + +- name: Download Grafana from official site + get_url: + url: "https://dl.grafana.com/oss/release/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + dest: "/tmp/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + timeout: 300 + validate_certs: no + tags: grafana + +- name: Show download info + debug: + msg: "Grafana скачан: /tmp/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + tags: grafana + +- name: Extract Grafana archive + unarchive: + src: "/tmp/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + dest: "/usr/share/" + remote_src: yes + owner: grafana + group: grafana + creates: "/usr/share/grafana-{{ grafana_version }}" + tags: grafana + +- name: Remove existing /usr/share/grafana if it exists (cleanup) + file: + path: /usr/share/grafana + state: absent + tags: grafana + +- name: Create symlink from extracted version + file: + src: "/usr/share/grafana-{{ grafana_version }}" + dest: "/usr/share/grafana" + state: link + owner: grafana + group: grafana + tags: grafana + +- name: Create binary symlinks + file: + src: "/usr/share/grafana/bin/{{ item }}" + dest: "/usr/local/bin/{{ item }}" + state: link + owner: root + group: root + loop: + - grafana-server + - grafana-cli + tags: grafana + +- name: Create Grafana configuration directory + file: + path: /etc/grafana + state: directory + owner: grafana + group: grafana + mode: '0755' + tags: grafana + +- name: Configure Grafana + template: + src: grafana.ini.j2 + dest: /etc/grafana/grafana.ini + owner: grafana + group: grafana + mode: '0644' + notify: restart grafana + tags: grafana + +- name: Install systemd service + template: + src: grafana.service.j2 + dest: /etc/systemd/system/grafana.service + owner: root + group: root + mode: '0644' + notify: restart grafana + tags: grafana + +- name: Reload systemd + systemd: + daemon_reload: yes + tags: grafana + +- name: Enable and start Grafana service + systemd: + name: grafana + enabled: yes + state: started + daemon_reload: yes + tags: grafana + +- name: Wait and verify Grafana is fully operational + include_tasks: wait_and_verify.yml + tags: grafana + +- name: Clean up temporary files + file: + path: "/tmp/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + state: absent + tags: grafana diff --git a/roles/grafana.backup/tasks/wait_and_verify.yml b/roles/grafana.backup/tasks/wait_and_verify.yml new file mode 100644 index 0000000..470e944 --- /dev/null +++ b/roles/grafana.backup/tasks/wait_and_verify.yml @@ -0,0 +1,68 @@ +--- +- name: Wait for Grafana to start (initial wait) + wait_for: + timeout: 30 + tags: grafana + +- name: Check if Grafana is listening on port 3000 (with retries) + wait_for: + port: 3000 + host: 127.0.0.1 + delay: 10 + timeout: 300 # 5 минут максимум + state: started + register: grafana_port_check + tags: grafana + +- name: Debug port check result + debug: + msg: "Grafana port check: {{ grafana_port_check.state }} after {{ grafana_port_check.elapsed }} seconds" + tags: grafana + +- name: Wait for Grafana API to be ready + uri: + url: "http://localhost:3000/api/health" + method: GET + status_code: 200 + timeout: 30 + register: grafana_api_check + until: grafana_api_check.status == 200 + retries: 30 # 30 попыток * 5 секунд = 150 секунд + delay: 5 + tags: grafana + +- name: Debug API check result + debug: + msg: "Grafana API responded with HTTP {{ grafana_api_check.status }} after {{ grafana_api_check.attempts }} attempts" + tags: grafana + +- name: Verify Grafana installation (final check) + block: + - name: Check Grafana service status + systemd: + name: grafana + register: grafana_service_status + tags: grafana + + - name: Check Grafana version + command: /usr/local/bin/grafana-server --version + register: grafana_version_check + changed_when: false + tags: grafana + + - name: Show installation summary + debug: + msg: | + ✅ Grafana успешно установлена! + + Версия: {{ grafana_version_check.stdout_lines[-1] | regex_search('Version ([0-9.]+)') | default('12.3.2') }} + Служба: {{ grafana_service_status.status.ActiveState }} + Порт 3000: {{ 'открыт' if grafana_port_check.state == 'started' else 'закрыт' }} + API: {{ 'доступен' if grafana_api_check.status == 200 else 'недоступен' }} + Время установки: {{ grafana_port_check.elapsed | default(0) | round(2) }} секунд + + Доступ по адресу: http://{{ inventory_hostname }}:3000 + Логин: admin + Пароль: {{ grafana_admin_password | default('admin') }} + tags: grafana + tags: grafana diff --git a/roles/grafana.backup/templates/grafana.ini.j2 b/roles/grafana.backup/templates/grafana.ini.j2 new file mode 100644 index 0000000..eb8ab70 --- /dev/null +++ b/roles/grafana.backup/templates/grafana.ini.j2 @@ -0,0 +1,27 @@ +[server] +http_port = 3000 +domain = 0.0.0.0 +root_url = http://%s:3000 +router_logging = true +enable_gzip = false + +[security] +admin_user = admin +admin_password = {{ grafana_admin_password | default('admin') }} + +[database] +type = sqlite3 +path = /var/lib/grafana/grafana.db + +[session] +provider = file + +[analytics] +reporting_enabled = false +check_for_updates = false + +[paths] +data = /var/lib/grafana +logs = /var/log/grafana +plugins = /var/lib/grafana/plugins +provisioning = /etc/grafana/provisioning diff --git a/roles/grafana.backup/templates/grafana.service.j2 b/roles/grafana.backup/templates/grafana.service.j2 new file mode 100644 index 0000000..b12dfee --- /dev/null +++ b/roles/grafana.backup/templates/grafana.service.j2 @@ -0,0 +1,24 @@ +[Unit] +Description=Grafana Server +Documentation=https://grafana.com/docs +After=network.target + +[Service] +Type=simple +User=grafana +Group=grafana +ExecStart=/usr/share/grafana/bin/grafana-server \ + --config=/etc/grafana/grafana.ini \ + --homepath=/usr/share/grafana \ + --packaging=tar +Restart=on-failure +RestartSec=10 +LimitNOFILE=10000 +Environment="GF_PATHS_HOME=/usr/share/grafana" +Environment="GF_PATHS_CONFIG=/etc/grafana/grafana.ini" +Environment="GF_PATHS_DATA=/var/lib/grafana" +Environment="GF_PATHS_LOGS=/var/log/grafana" +Environment="GF_PATHS_PLUGINS=/var/lib/grafana/plugins" + +[Install] +WantedBy=multi-user.target diff --git a/roles/grafana/defaults/main.yml b/roles/grafana/defaults/main.yml new file mode 100644 index 0000000..fbfef71 --- /dev/null +++ b/roles/grafana/defaults/main.yml @@ -0,0 +1,4 @@ +--- +grafana_admin_password: "admin" +grafana_version: "12.3.2" +grafana_archive_type: "tar.gz" # или "zip" diff --git a/roles/grafana/handlers/main.yml b/roles/grafana/handlers/main.yml new file mode 100644 index 0000000..27972db --- /dev/null +++ b/roles/grafana/handlers/main.yml @@ -0,0 +1,6 @@ +--- +- name: restart grafana + systemd: + name: grafana + state: restarted + daemon_reload: yes diff --git a/roles/grafana/tasks/main.yml b/roles/grafana/tasks/main.yml new file mode 100644 index 0000000..ba83059 --- /dev/null +++ b/roles/grafana/tasks/main.yml @@ -0,0 +1,142 @@ +--- +- name: Debug - Show Grafana version + debug: + msg: "Устанавливаем Grafana версии {{ grafana_version }}" + tags: grafana + +- name: Install minimal dependencies + apt: + name: + - curl + - adduser + - libfontconfig1 + - tar + - gzip + - procps + state: present + update_cache: yes + tags: grafana + +- name: Create Grafana user and group + user: + name: grafana + system: yes + shell: /bin/false + home: /usr/share/grafana + comment: "Grafana Server" + tags: grafana + +- name: Create Grafana data/log/config directories + file: + path: "{{ item }}" + state: directory + owner: grafana + group: grafana + mode: '0755' + loop: + - /var/lib/grafana + - /var/log/grafana + - /etc/grafana + tags: grafana + +- name: Download Grafana from official site + get_url: + url: "https://dl.grafana.com/oss/release/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + dest: "/tmp/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + timeout: 300 + validate_certs: no + tags: grafana + +- name: Show download info + debug: + msg: "Grafana скачан: /tmp/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + tags: grafana + +- name: Extract Grafana archive + unarchive: + src: "/tmp/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + dest: "/usr/share/" + remote_src: yes + owner: grafana + group: grafana + creates: "/usr/share/grafana-{{ grafana_version }}" + tags: grafana + +- name: Remove existing /usr/share/grafana if it exists (cleanup) + file: + path: /usr/share/grafana + state: absent + tags: grafana + +- name: Create symlink from extracted version + file: + src: "/usr/share/grafana-{{ grafana_version }}" + dest: "/usr/share/grafana" + state: link + owner: grafana + group: grafana + tags: grafana + +- name: Create binary symlinks + file: + src: "/usr/share/grafana/bin/{{ item }}" + dest: "/usr/local/bin/{{ item }}" + state: link + owner: root + group: root + loop: + - grafana-server + - grafana-cli + tags: grafana + +- name: Create Grafana configuration directory + file: + path: /etc/grafana + state: directory + owner: grafana + group: grafana + mode: '0755' + tags: grafana + +- name: Configure Grafana + template: + src: grafana.ini.j2 + dest: /etc/grafana/grafana.ini + owner: grafana + group: grafana + mode: '0644' + notify: restart grafana + tags: grafana + +- name: Install systemd service + template: + src: grafana.service.j2 + dest: /etc/systemd/system/grafana.service + owner: root + group: root + mode: '0644' + notify: restart grafana + tags: grafana + +- name: Reload systemd + systemd: + daemon_reload: yes + tags: grafana + +- name: Enable and start Grafana service + systemd: + name: grafana + enabled: yes + state: started + daemon_reload: yes + tags: grafana + +- name: Wait and verify Grafana is fully operational + include_tasks: wait_and_verify.yml + tags: grafana + +- name: Clean up temporary files + file: + path: "/tmp/grafana-{{ grafana_version }}.linux-amd64.tar.gz" + state: absent + tags: grafana diff --git a/roles/grafana/tasks/wait_and_verify.yml b/roles/grafana/tasks/wait_and_verify.yml new file mode 100644 index 0000000..91d918a --- /dev/null +++ b/roles/grafana/tasks/wait_and_verify.yml @@ -0,0 +1,110 @@ +--- +- name: Phase 1: Initial wait for Grafana to start + pause: + seconds: 60 + prompt: "Phase 1/5: Initial wait for Grafana startup (60 seconds)..." + tags: grafana + +- name: Check if Grafana service is active (with retries) + shell: | + systemctl is-active grafana + register: grafana_active + until: grafana_active.stdout == "active" + retries: 60 # 60 * 5 = 300 секунд (5 минут) + delay: 5 + tags: grafana + +- name: Phase 2: Wait for database migrations (wave 1) + pause: + seconds: 180 + prompt: "Phase 2/5: Waiting for database migrations (180 seconds)..." + tags: grafana + +- name: Phase 3: Wait for plugins installation (wave 2) + pause: + seconds: 180 + prompt: "Phase 3/5: Waiting for plugins installation (180 seconds)..." + tags: grafana + +- name: Phase 4: Wait for HTTP server startup (wave 3) + pause: + seconds: 180 + prompt: "Phase 4/5: Waiting for HTTP server startup (180 seconds)..." + tags: grafana + +- name: Check if port 3000 is listening (with very long timeout) + wait_for: + port: 3000 + host: 127.0.0.1 + timeout: 600 # 10 минут + state: started + register: port_check + tags: grafana + +- name: Phase 5: Final verification (wave 4) + pause: + seconds: 120 + prompt: "Phase 5/5: Final verification (120 seconds)..." + tags: grafana + +- name: Check Grafana API health (with many retries) + uri: + url: "http://localhost:3000/api/health" + method: GET + status_code: 200 + timeout: 10 + register: api_check + until: api_check.status == 200 + retries: 60 # 60 * 5 = 300 секунд (5 минут) + delay: 5 + tags: grafana + +- name: Calculate total wait time + set_fact: + total_wait_time: "{{ 60 + 180 + 180 + 180 + 120 }}" + tags: grafana + +- name: Show installation success with detailed info + debug: + msg: | + 🎉 Grafana успешно установлена и готова к работе! + + ⏱️ Общее время установки: {{ total_wait_time }} секунд + 📊 Статус компонентов: + • Служба: ✅ {{ grafana_active.stdout }} + • Порт 3000: {{ '✅ открыт' if port_check is defined and port_check.state == 'started' else '❌ закрыт' }} + • API: {{ '✅ доступен (HTTP ' ~ api_check.status ~ ')' if api_check is defined and api_check.status == 200 else '❌ недоступен' }} + + 🔗 Доступ: + • URL: http://{{ inventory_hostname }}:3000 + • Логин: admin + • Пароль: {{ grafana_admin_password | default('admin') }} + + 📋 Для проверки выполните: + curl http://{{ inventory_hostname }}:3000/api/health + + 💡 Примечание: Первый запуск Grafana занимает время из-за: + 1. Миграций базы данных + 2. Установки плагинов по умолчанию + 3. Инициализации сервиса + + Последующие запуски будут значительно быстрее. + tags: grafana + +- name: Final check from control node (optional) + delegate_to: localhost + run_once: yes + when: false # Отключено по умолчанию, можно включить + tags: grafana + block: + - name: Test external access + uri: + url: "http://{{ hostvars[groups['grafana'][0]]['ansible_default_ipv4']['address'] | default(groups['grafana'][0]) }}:3000/api/health" + method: GET + status_code: 200 + timeout: 30 + register: external_check + + - name: Show external access result + debug: + msg: "External access: {{ '✅ успешно' if external_check.status == 200 else '❌ недоступно' }}" diff --git a/roles/grafana/templates/grafana.ini.j2 b/roles/grafana/templates/grafana.ini.j2 new file mode 100644 index 0000000..517192a --- /dev/null +++ b/roles/grafana/templates/grafana.ini.j2 @@ -0,0 +1,27 @@ +[server] +http_port = 3000 +domain = 0.0.0.0 +root_url = http://localhost:3000 +router_logging = true +enable_gzip = false + +[security] +admin_user = admin +admin_password = {{ grafana_admin_password | default('admin') }} + +[database] +type = sqlite3 +path = /var/lib/grafana/grafana.db + +[session] +provider = file + +[analytics] +reporting_enabled = false +check_for_updates = false + +[paths] +data = /var/lib/grafana +logs = /var/log/grafana +plugins = /var/lib/grafana/plugins +provisioning = /etc/grafana/provisioning diff --git a/roles/grafana/templates/grafana.service.j2 b/roles/grafana/templates/grafana.service.j2 new file mode 100644 index 0000000..b12dfee --- /dev/null +++ b/roles/grafana/templates/grafana.service.j2 @@ -0,0 +1,24 @@ +[Unit] +Description=Grafana Server +Documentation=https://grafana.com/docs +After=network.target + +[Service] +Type=simple +User=grafana +Group=grafana +ExecStart=/usr/share/grafana/bin/grafana-server \ + --config=/etc/grafana/grafana.ini \ + --homepath=/usr/share/grafana \ + --packaging=tar +Restart=on-failure +RestartSec=10 +LimitNOFILE=10000 +Environment="GF_PATHS_HOME=/usr/share/grafana" +Environment="GF_PATHS_CONFIG=/etc/grafana/grafana.ini" +Environment="GF_PATHS_DATA=/var/lib/grafana" +Environment="GF_PATHS_LOGS=/var/log/grafana" +Environment="GF_PATHS_PLUGINS=/var/lib/grafana/plugins" + +[Install] +WantedBy=multi-user.target