- name: Install RHEL packages ansible.builtin.dnf: name: "{{ item }}" state: latest loop: "{{ rhel_db_packages }}" tags: - install_db when: ansible_os_family == "RedHat" - name: Install Debian packages ansible.builtin.apt: name: "{{ item }}" state: latest loop: "{{ debian_db_packages }}" tags: - install_db when: ansible_os_family == "Debian" - name: Enable and start service postgresl ansible.builtin.service: name: postgresql state: started enabled: yes tags: - install_db - name: Generate create db script ansible.builtin.template: src: create_db.j2 dest: /tmp/create_db.sql owner: postgres tags: - install_db - name: Run create db script ansible.builtin.shell: su - postgres -c 'psql -f /tmp/create_db.sql' tags: - install_db - name: Add zabbix user to pg_hba ansible.builtin.lineinfile: path: /etc/postgresql/{{ postgresql_version }}/main/pg_hba.conf insertafter: '# Database administrative login by Unix domain socket' line: "local {{ db_name }} {{ db_user }} trust" firstmatch: yes state: present - name: Find Group set_fact: my_group: "{{ group_names | first }}" - name: Créer les entrées pg_hba pour tous les hosts avec rôle 'srv' lineinfile: path: /etc/postgresql/{{ postgresql_version }}/main/pg_hba.conf line: "host {{ db_name }} {{ db_user }} {{ hostvars[item]['ansible_default_ipv4']['address'] }}/32 md5" state: present loop: "{{ groups[my_group] }}" when: - hostvars[item].role is defined - hostvars[item].role == 'srv' or hostvars[item].role == 'front' - hostvars[item]['ansible_default_ipv4'] is defined - name: Configure postgres Listen address ansible.builtin.lineinfile: path: /etc/postgresql/17/main/postgresql.conf regexp: '^#listen_addresses = .*' line: "listen_addresses = '*'" tags: - install_db - name: Restart postgresql service: name: postgresql state: restarted tags: - install_db - name: Populate zabbix database ansible.builtin.shell: 'zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | psql -Uzabbix zabbix' tags: - install_db