---
- name: create prometheus system group
  group:
    name: prometheus
    system: true
    state: present

- name: create prometheus system user
  user:
    name: prometheus
    system: true
    shell: "/usr/sbin/nologin"
    group: prometheus
    createhome: false
    home: "{{ prometheus_db_dir }}"

- name: create prometheus data directory
  file:
    path: "{{ prometheus_db_dir }}"
    state: directory
    owner: prometheus
    group: prometheus
    mode: 0755

- name: create prometheus configuration directories
  file:
    path: "{{ item }}"
    state: directory
    owner: root
    group: prometheus
    mode: 0770
  with_items:
    - "{{ prometheus_config_dir }}"
    - "{{ prometheus_config_dir }}/rules"
    - "{{ prometheus_config_dir }}/file_sd"

- name: propagate official prometheus and promtool binaries
  copy:
    src: "/tmp/{{ prometheus_tarball }}/{{ item }}"
    dest: "{{ prometheus_binary_install_dir }}/{{ item }}"
    mode: 0755
    owner: root
    group: root
    remote_src: true
  with_items:
    - prometheus
    - promtool
  notify:
    - restart prometheus

- name: propagate official console templates
  copy:
    src: "/tmp/{{ prometheus_tarball }}/{{ item }}/"
    dest: "{{ prometheus_config_dir }}/{{ item }}"
    mode: 0644
    owner: root
    group: root
    remote_src: true
  with_items:
    - console_libraries
    - consoles
  notify:
    - restart prometheus

      #- name: propagate locally distributed prometheus and promtool binaries
      #  copy:
      #    src: "{{ prometheus_binary_local_dir }}/{{ item }}"
      #    dest: "{{ prometheus_binary_install_dir }}/{{ item }}"
      #    mode: 0755
      #    owner: root
      #    group: root
      #    remote_src: true
      #  with_items:
      #    - prometheus
      #    - promtool
      #  notify:
      #    - restart prometheus

- name: create systemd service unit
  template:
    src: prometheus.service.j2
    dest: /etc/systemd/system/prometheus.service
    owner: root
    group: root
    mode: 0644
  notify:
    - restart prometheus

- name: Allow prometheus to bind to port in SELinux
  seport:
    ports: "{{ prometheus_web_listen_address.split(':')[1] }}"
    proto: tcp
    setype: http_port_t
    state: present
  when: ansible_selinux.status == "enabled"
