diff --git a/roles/prometheus/defaults/main.yml b/roles/prometheus/defaults/main.yml index 5ecc61c..da34767 100644 --- a/roles/prometheus/defaults/main.yml +++ b/roles/prometheus/defaults/main.yml @@ -1,7 +1,4 @@ --- -prometheus_version: 3.2.1 -prometheus_dir: "/etc/prometheus" -prometheus_user: prometheus -prometheus_group: prometheus -prometheus_config_dir: "/etc/prometheus/conf" +prometheus_version: "3.5.0" +prometheus_config_dir: "/etc/prometheus" prometheus_db_dir: "/var/lib/prometheus" diff --git a/roles/prometheus/molecule/default/converge.yml b/roles/prometheus/molecule/default/converge.yml index a9b0439..c867a06 100644 --- a/roles/prometheus/molecule/default/converge.yml +++ b/roles/prometheus/molecule/default/converge.yml @@ -5,4 +5,4 @@ roles: - role: genlab.common.prometheus prometheus_config_source_dir: prometheus - alertrules_source_dir: prometheus/rules + prometheus_alertrules_source_dir: prometheus/rules diff --git a/roles/prometheus/molecule/default/verify.yml b/roles/prometheus/molecule/default/verify.yml index c085dd1..c2107bb 100644 --- a/roles/prometheus/molecule/default/verify.yml +++ b/roles/prometheus/molecule/default/verify.yml @@ -19,8 +19,8 @@ - name: "Check Prometheus version" ansible.builtin.assert: that: "prometheus_installed_version.stdout is regex('{{ prometheus_version }}')" - success_msg: "Prometheus version {{ prometheus_version }} is installed and working" - fail_msg: "Prometheus version {{ prometheus_version }} is not installed or not working correctly" + success_msg: "Prometheus version {{ prometheus_version }} is available and executable" + fail_msg: "Prometheus version {{ prometheus_version }} not found or not executable" # kics-scan ignore-block - name: "Check if Prometheus is reachable" diff --git a/roles/prometheus/tasks/configure.yml b/roles/prometheus/tasks/configure.yml index cbad1ad..a8ac6e9 100644 --- a/roles/prometheus/tasks/configure.yml +++ b/roles/prometheus/tasks/configure.yml @@ -1,23 +1,23 @@ --- -- name: "Copy config file" +- name: "Configure | Copy Prometheus configuration files" notify: "(Re)start Prometheus service" - ansible.builtin.copy: - src: "{{ item }}" - dest: "{{ prometheus_config_dir }}/{{ item | basename }}" - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" - mode: "0660" with_fileglob: - "{{ prometheus_config_source_dir }}/*.yml" - -- name: "Copy alert rules" - notify: "(Re)start Prometheus service" - when: alertrules_source_dir is defined ansible.builtin.copy: src: "{{ item }}" dest: "{{ prometheus_config_dir }}/{{ item | basename }}" - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + owner: "prometheus" + group: "prometheus" mode: "0660" + +- name: "Configure | Copy alert rules" + notify: "(Re)start Prometheus service" + when: prometheus_alertrules_source_dir is defined with_fileglob: - - "{{ alertrules_source_dir }}/*.yml" + - "{{ prometheus_alertrules_source_dir }}/*.yml" + ansible.builtin.copy: + src: "{{ item }}" + dest: "{{ prometheus_config_dir }}/rules/{{ item | basename }}" + owner: "prometheus" + group: "prometheus" + mode: "0660" diff --git a/roles/prometheus/tasks/install.yml b/roles/prometheus/tasks/install.yml index 3118047..03877de 100644 --- a/roles/prometheus/tasks/install.yml +++ b/roles/prometheus/tasks/install.yml @@ -1,84 +1,69 @@ --- -- name: "Create Prometheus system group" - ansible.builtin.group: - name: "{{ prometheus_group }}" - system: true - state: present - -- name: "Create Prometheus system user" +- name: "Install | Create Prometheus system user" ansible.builtin.user: - name: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + name: "prometheus" system: true shell: "/sbin/nologin" create_home: false state: present -- name: "Install prometheus from binary" +- name: "Install | Install the binary" block: - - name: "Check Prometheus version" + - name: "Install | Check Prometheus version" changed_when: false ansible.builtin.command: cmd: "prometheus --version" register: prometheus_ver - - name: "Assert version correctness" + - name: "Install | Assert version correctness" ansible.builtin.assert: that: "prometheus_ver.stdout is regex('{{ prometheus_version }}')" success_msg: "prometheus version {{ prometheus_version }} is installed and working" fail_msg: "prometheus version {{ prometheus_version }} is not installed or not working correctly" rescue: - - name: "Create prometheus directories {{ item }}" + - name: "Install | Create directories {{ item }}" + with_items: + - "{{ prometheus_config_dir }}" + - "{{ prometheus_config_dir }}/rules" + - "{{ prometheus_db_dir }}" ansible.builtin.file: path: "{{ item }}" state: directory - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + owner: "prometheus" + group: "prometheus" mode: "0755" - with_items: - - "{{ prometheus_config_dir }}" - - "{{ prometheus_dir }}" - - "{{ prometheus_db_dir }}" - - name: "Download Prometheus binary" - ansible.builtin.get_url: - url: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheus_version }}/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" - dest: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" - mode: "0644" - - - name: "Unpack Prometheus binaries" + - name: "Install | Fetch and unpack the distribution" notify: "(Re)start Prometheus service" ansible.builtin.unarchive: - src: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" - dest: "{{ prometheus_dir }}" - creates: "{{ prometheus_dir }}/prometheus-{{ prometheus_version }}.linux-amd64" + src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheus_version }}/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" + dest: "/tmp" + creates: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64" remote_src: true - - name: "Cleanup downloaded file" - ansible.builtin.file: - path: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" - state: absent - - - name: "Move official prometheus and promtool binaries" - ansible.builtin.copy: - src: "{{ prometheus_dir }}/prometheus-{{ prometheus_version }}.linux-amd64/{{ item }}" - dest: "/usr/local/bin/{{ item }}" - mode: "0755" - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" - remote_src: true + - name: "Install | Put the binaries under the PATH" with_items: - prometheus - promtool + ansible.builtin.copy: + remote_src: true + src: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64/{{ item }}" + dest: "/usr/bin/{{ item }}" + owner: "prometheus" + group: "prometheus" + mode: "0755" -- name: "Create systemd service unit" + - name: "Install | Clean up the downloads" + ansible.builtin.file: + path: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64" + state: absent + +- name: "Install | Create a systemd service unit" notify: "(Re)start Prometheus service" ansible.builtin.template: src: prometheus.service.j2 dest: /etc/systemd/system/prometheus.service - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + owner: "prometheus" + group: "prometheus" mode: "0660" diff --git a/roles/prometheus/templates/prometheus.service.j2 b/roles/prometheus/templates/prometheus.service.j2 index 2f17191..45a6668 100644 --- a/roles/prometheus/templates/prometheus.service.j2 +++ b/roles/prometheus/templates/prometheus.service.j2 @@ -8,7 +8,7 @@ Documentation="https://prometheus.io/" User=prometheus Group=prometheus Type=simple -ExecStart=/usr/local/bin/prometheus \ +ExecStart=/usr/bin/prometheus \ --config.file {{ prometheus_config_dir }}/prometheus.yml \ --storage.tsdb.path {{ prometheus_db_dir }} \ --storage.tsdb.retention.time=30d @@ -25,4 +25,4 @@ ProtectClock=yes RestrictSUIDSGID=true [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=multi-user.target