Ansible Prometheus

An Ansible role that installs Prometheus, in the format for Ansible Galaxy.
Alternatives To Ansible Prometheus
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Ansible Node Exporter503
a month agomitPython
Provision basic metrics exporter for prometheus monitoring tool
Ansible Prometheus257
3 years ago12mitShell
An Ansible role that installs Prometheus, in the format for Ansible Galaxy.
Ansible Alertmanager142
a month agomitJinja
Deploy Prometheus Alertmanager service
2 years ago33apache-2.0Go
Azure metrics exporter for Prometheus
Ansible Prometheus Node Exporter83
a year ago8gpl-2.0Shell
Ansible role for deploying Prometheus node exporter
Ansible Prometheus69
7 years ago1
Ansible role for installing Prometheus monitoring server and node_exporter binary
Ansible Blackbox Exporter60
a month agomitPython
Blackbox prober exporter
Ansible Role Linux Prometheus55
8 months agomitJinja
Ansible role for install and configure standalone or distributed Prometheus v2 with long term storage capabilities on Linux operating system.
Ansible Role Node_exporter54
2 months ago3mitJinja
Ansible role - Node exporter
Kubecost Quickstart39
4 years ago1Smarty
Quickly install kube-state-metrics, prometheus, and grafana on your cluster with helm.
Alternatives To Ansible Prometheus
Select To Compare

Alternative Project Comparisons

william-yeh.prometheus for Ansible Galaxy

Circle CI Build Status


Role name in Ansible Galaxy: william-yeh.prometheus

This Ansible role has the following features for Prometheus:

  • Install specific versions of Prometheus server, Node exporter, Alertmanager.
  • Handlers for restart/reload/stop events;
  • Bare bone configuration (real configuration should be left to user's template files; see Usage section below).

To keep this role simple, this role only installs 3 components: Prometheus server, Node exporter, and Alertmanager. Use the following roles if you want to install other Prometheus exporters:

Supports for Ubuntu 12.04 (Precise) and CentOS 6 have been ended since Nov 2018.

Role Variables

Mandatory variables

The components to be installed:

# Supported components:
#   [Server components]
#     - "prometheus"
#     - "alertmanager"
#   [Exporter components]
#     - "node_exporter"

Optional variables: general settings

User-configurable defaults:

# user and group
prometheus_user:   prometheus
prometheus_group:  prometheus

# directory for executable files
prometheus_install_path:   /opt/prometheus

# directory for configuration files
prometheus_config_path:    /etc/prometheus

# directory for logs
prometheus_log_path:       /var/log/prometheus

# directory for PID files
prometheus_pid_path:       /var/run/prometheus

# directory for temporary files
prometheus_download_path:  /tmp

# version of helper utility "gosu"
gosu_version:  "1.11"

Optional variables: systemd or not

If the Linux distributions are equipped with systemd, this role will use this mechanism accordingly. You can disable this (i.e., use traditional SysV-style init script) by defining the following variable(s) to false:


Optional variables: Prometheus server

User-configurable defaults:

# which version?
prometheus_version:  2.5.0

# directory for rule files
prometheus_rule_path:  {{ prometheus_config_path }}/rules

# directory for file_sd files
prometheus_file_sd_config_path:  {{ prometheus_config_path }}/tgroups

# directory for runtime database
prometheus_db_path:   /var/lib/prometheus

User-installable configuration file (see doc for details):

# main conf template relative to `playbook_dir`;
# to be installed to "{{ prometheus_config_path }}/prometheus.yml"

User-installable rule files (see doc for details):

# rule files to be installed to "{{ prometheus_rule_path }}" directory;
# dict fields:
#   - key: memo for this rule
#   - value:
#     - src:  file relative to `playbook_dir`
#     - dest: target file relative to `{{ prometheus_rule_path }}`

Alertmanager to be triggered:


Additional command-line arguments, if any (use prometheus --help to see the full list of arguments):


Optional variables: Node exporter

User-configurable defaults:

# which version?
prometheus_node_exporter_version:  0.16.0

Additional command-line arguments, if any (use node_exporter --help to see the full list of arguments):


Optional variables: Alertmanager

User-configurable defaults:

# which version?
prometheus_alertmanager_version:  0.15.3

# directory for runtime database (currently for `silences.json`)
prometheus_alertmanager_db_path: /var/lib/alertmanager

User-installable alertmanager conf file (see doc for details):

# main conf template relative to `playbook_dir`;
# to be installed to "{{ prometheus_config_path }}/alertmanager.yml"

Additional command-line arguments, if any (use alertmanager --help to see the full list of arguments):


Optional: building from source tree

(Credit: Robbie Trencheny)

For aforementioned prometheus_components, you can optionally download/compile from the master branch of Prometheus repositories by setting the respective version to git.

It will install a temporary Golang compiler in the prometheus_workdir directory (defined in defaults/main.yml).

For example, get the latest code for all components by assigning all *_version variables to git:

prometheus_version: git
prometheus_node_exporter_version: git
prometheus_alertmanager_version: git

If you'd like to force rebuild each time, enable the following variable (default is false):

prometheus_rebuild: true


Prometheus server:

  • restart prometheus

  • reload prometheus

  • stop prometheus

Node exporter:

  • restart node_exporter

  • reload node_exporter (actually, the same as restart)

  • stop node_exporter


  • restart alertmanager

  • reload alertmanager

  • stop alertmanager


Step 1: add role

Add role name william-yeh.prometheus to your playbook file.

Step 2: add variables

Set vars in your playbook file, if necessary.

Simple example:

# file: simple-playbook.yml

- hosts: all
  become: True
    - william-yeh.prometheus

    prometheus_components: [ "prometheus", "alertmanager" ]

    prometheus_alertmanager_hostport: "localhost:9093"

Step 3: copy user's config files, if necessary

More practical example:

# file: complex-playbook.yml

- hosts: all
  become: True
    - william-yeh.prometheus

      - prometheus
      - node_exporter
      - alertmanager

        src:  some/path/basic.rules
        dest: basic.rules

    prometheus_alertmanager_conf: some/path/alertmanager.yml.j2

Step 4: browse the default Prometheus pages

Open the page in your browser:

  • Prometheus - http://HOST:9090 or http://HOST:9090/consoles/node.html

  • Alertmanager - http://HOST:9093





MIT License. See the LICENSE file for details.

Popular Prometheus Projects
Popular Role Projects
Popular Operations Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.