Menu

Prometheus Install

module.exports = header: 'Grafana WEBUi Install', handler: ({options}) ->
  rpm_archive = '/tmp/grafana'

Wait for database to listen

  @call 'ryba/commons/db_admin/wait', once: true, options.wait_db_admin

Identities

  @system.group header: 'Group', options.group
  @system.user header: 'User', options.user

IPTables

ServicePortProtoParameter
Grafana UI3000httpsserver.http_port
  @tools.iptables
    header: 'IPTables'
    if: options.iptables
    rules: [
      { chain: 'INPUT', jump: 'ACCEPT', dport: options.ini['server']['http_port'] , protocol: 'tcp', state: 'NEW', comment: "Grafana Port" }
    ]

Packages

  @call
    header: 'Packages'
  , ->
    @service
      name: 'grafana'
    @call
      if_os: name: ['redhat','centos'], version: '7'
    , ->
      @service.init
        source: "#{__dirname}/../resources/grafana-webui-systemd.j2"
        target: '/usr/lib/systemd/system/grafana-webui.service'
        context: options
        mode: 0o0640
        local: true
        eof: true
      @system.tmpfs
        mount: options.run_dir
        uid: options.user.name
        gid: options.group.name
        perm: '0750'

Environment

  @file
    header: 'Environment'
    target: "#{options.conf_dir}/grafana-server"
    write: for k, v of options.env
      match: RegExp "^#{quote k}=.*$", 'mg'
      replace: "#{k}=#{v}"
      append: true
    backup: true
    eof: true
    mode: 0o0750
    uid: options.user.name
    gid: options.group.name

SQL Connectors

  @service
    header: 'mysql client'
    if: options.db.engine in ['mariadb', 'mysql']
    name: 'mysql'
  @service
    header: 'postgres client'
    if: options.db.engine is 'postgresql'
    name: 'postgresql'

DB

  @call header: 'Grafana DB', ->
    @db.user options.db, database: null,
      header: 'User'
      if: options.db.engine in ['mariadb', 'postgresql', 'mysql']
    @db.database options.db,
      header: 'Database'
      user: options.db.username
      if: options.db.engine in ['mariadb', 'postgresql', 'mysql']
    @db.schema options.db,
      header: 'Schema'
      if: options.db.engine is 'postgresql'
      schema: options.db.schema or options.db.database
      database: options.db.database
      owner: options.db.username

SSL

  @file.download
    header: 'SSL Cert'
    source: options.ssl.cert.source
    target: options.ini['server']['cert_file']
    local: options.ssl.cert.local
  @file.download
    header: 'SSL Key'
    source: options.ssl.key.source
    target: options.ini['server']['cert_key']
    local: options.ssl.key.local

Configuration File

  @file.ini
    header: 'Grafana ini'
    target: "#{options.conf_dir}/grafana.ini"
    content: options.ini
    backup: true
    uid: options.user.name
    gid: options.group.name
    mode: 0o0640

Dependencies

quote = require 'regexp-quote'
misc = require '@nikitajs/core/lib/misc'