diff --git a/defaults/main.yml b/defaults/main.yml index 4ffdbc2..6079d9a 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,66 +1,7 @@ --- # defaults file for zabbix -Debian: - repo: https://repo.zabbix.com/zabbix/7.4/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.4+debian13_all.deb - db: - packages: - - postgresql-contrib - - postgresql - - python3-psycopg2 - - zabbix-sql-scripts - - zabbix-agent2 - srv: - packages: - - zabbix-server-pgsql - - zabbix-agent2 - front: - packages: - - zabbix-frontend-php - - php8.4-pgsql - - zabbix-nginx-conf - - nginx - - zabbix-agent2 - proxy: - packages: - - mariadb-server - - zabbix-proxy-mysql - - zabbix-sql-scripts - - zabbix-agent2 - agent: - packages: - - zabbix-agent2 - -rhel_db_packages: - - postgresql-server - - postgresql - - postgresql-plpython3 - - zabbix-agent2 - -rhel_srv_packages: - - zabbix-server-pgsql - - zabbix-sql-scripts - - zabbix-selinux-policy - - zabbix-agent2 - -rhel_agent_packages: - - zabbix-agent2 - -rhel_front_packages: - - zabbix-web-pgsql - - zabbix-nginx-conf - - zabbix-agent2 - - -rhel_proxy_packages: - - mariadb - - zabbix-proxy-mysql - - zabbix-sql-scripts - - zabbix-agent2 - - - - +zabbix_version: 7.4 roles_cibles: ['srv', 'proxy'] db_name: zabbix diff --git a/handlers/main.yml b/handlers/main.yml index 52f627b..90b89ab 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -10,6 +10,11 @@ name: nginx state: restarted +- name: Restart php-fpm + service: + name: php-fpm + state: restarted + - name: Restart Zabbix Server service: name: zabbix-server diff --git a/tasks/RedHat/install-db.yml b/tasks/RedHat/install-db.yml index 5fb32a0..7cc4bab 100644 --- a/tasks/RedHat/install-db.yml +++ b/tasks/RedHat/install-db.yml @@ -1,15 +1,31 @@ -- name: Install RHEL packages +- name: Database - Install RHEL packages ansible.builtin.dnf: name: "{{ item }}" - state: latest + state: present loop: "{{ db.packages }}" tags: - install_db - when: ansible_os_family == "RedHat" -- name: Enable and start service postgresl +- name: Database - Check if postgrsql configured + stat: + path: /var/lib/pgsql/data + register: postgresqldata + +- name: Database - debug + debug: + var: postgresqldata + +- name: Database - Init DB + ansible.builtin.shell: + cmd: postgresql-setup --initdb + when: postgresqldata.stat.exists == false + tags: + - install_db + + +- name: Database - Enable and start service postgresl ansible.builtin.service: name: postgresql state: started @@ -17,7 +33,7 @@ tags: - install_db -- name: Generate create db script +- name: Database - Generate create db script ansible.builtin.template: src: create_db.j2 dest: /tmp/create_db.sql @@ -25,26 +41,26 @@ tags: - install_db -- name: Run create db script +- name: Database - Run create db script ansible.builtin.shell: su - postgres -c 'psql -f /tmp/create_db.sql' tags: - - install_db + - install_db -- name: Add zabbix user to pg_hba +- name: Database - 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' + path: /var/lib/pgsql/data/pg_hba.conf + insertafter: '# "local" is for Unix domain socket connections only' line: "local {{ db_name }} {{ db_user }} trust" firstmatch: yes state: present -- name: Find Group +- name: Database -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' +- name: Database - 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 + path: /var/lib/pgsql/data/pg_hba.conf line: "host {{ db_name }} {{ db_user }} {{ hostvars[item]['ansible_default_ipv4']['address'] }}/32 md5" state: present loop: "{{ groups[my_group] }}" @@ -53,16 +69,16 @@ - hostvars[item].role == 'srv' or hostvars[item].role == 'front' - hostvars[item]['ansible_default_ipv4'] is defined -- name: Configure postgres Listen address +- name: Database - Configure postgres Listen address ansible.builtin.lineinfile: - path: /etc/postgresql/17/main/postgresql.conf + path: /var/lib/pgsql/data/postgresql.conf regexp: '^#listen_addresses = .*' line: "listen_addresses = '*'" tags: - install_db -- name: Restart postgresql +- name: Database - Restart postgresql service: name: postgresql state: restarted diff --git a/tasks/RedHat/install-front.yml b/tasks/RedHat/install-front.yml new file mode 100644 index 0000000..e032ffd --- /dev/null +++ b/tasks/RedHat/install-front.yml @@ -0,0 +1,36 @@ +- name: Front - Install packages + ansible.builtin.dnf: + name: "{{ item }}" + state: present + loop: "{{ front.packages }}" + tags: + - install_front + +- name: Front - Configure nginx port + ansible.builtin.lineinfile: + path: /etc/nginx/conf.d/zabbix.conf + regexp: 'listen 8080;' + line: " listen 80;" + tags: + - install_front + notify: Restart nginx + +- name: Front - Configure nginx url + ansible.builtin.lineinfile: + path: /etc/nginx/conf.d/zabbix.conf + regexp: 'server_name example.com;' + line: " server_name {{ inventory_hostname }};" + tags: + - install_front + notify: + - Restart nginx + - Restart php-fpm + +- name: Front - Configure keepalived + ansible.builtin.template: + src: keepalived.conf.j2 + dest: /etc/keepalived/keepalived.conf + owner: root + group: root + mode: 0644 + notify: Restart Keepalived diff --git a/tasks/RedHat/install-srv.yml b/tasks/RedHat/install-srv.yml index 9ec54f7..ca010ec 100644 --- a/tasks/RedHat/install-srv.yml +++ b/tasks/RedHat/install-srv.yml @@ -1,12 +1,10 @@ - name: Server - Install packages ansible.builtin.dnf: name: "{{ item }}" - state: latest + state: present loop: "{{ srv.packages }}" tags: - install_srv - when: ansible_os_family == "RedHat" - - name: Server - Generate srv config ansible.builtin.template: src: zabbix_server.conf.j2 @@ -49,5 +47,6 @@ enabled: true loop: - zabbix-server + - zabbix-agent2 tags: - install_srv \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml index 9bf8fce..a0c7274 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -4,14 +4,29 @@ debug: var=ansible_os_family - name: include os variables - include_vars: "{{ansible_os_family}}.yml" + include_vars: "{{ ansible_os_family }}.yml" tags: always -- name: Prepare RHEL + +- name: Prepare Alma + when: ansible_distribution == "AlmaLinux" + block: + - name: add gpg + ansible.builtin.dnf: + name: gnupg2 + state: present + - name: Import a key from a url + ansible.builtin.rpm_key: + state: present + key: https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-B5333005 + - name: Add Package + ansible.builtin.dnf: + name: "https://repo.zabbix.com/zabbix/{{ zabbix_version }}/release/alma/{{ ansible_distribution_major_version }}/noarch/zabbix-release-latest-{{ zabbix_version }}.el{{ ansible_distribution_major_version }}.noarch.rpm" + state: present + +- name: Prepare RH like + when: ansible_os_family == "RedHat" block: - - name: Alma Repo - ansible.builtin.shell: - cmd: "rpm -Uvh {{repo}}" - name: disable firewall ansible.builtin.service: name: firewalld @@ -20,17 +35,16 @@ - name: clean repo ansible.builtin.shell: cmd: dnf clean all - when: ansible_os_family == "RedHat" - name: Prepare Debian - block: - - name: Debian Repo - ansible.builtin.apt: - deb: "{{repo}}" - - name: Mise à jour le cache des paquets - ansible.builtin.apt: - update_cache: yes when: ansible_os_family == "Debian" + block: + - name: Debian Repo + ansible.builtin.apt: + deb: "{{repo}}" + - name: Mise à jour le cache des paquets + ansible.builtin.apt: + update_cache: yes - name: Database - Install when: role == "db" @@ -47,11 +61,11 @@ tags: - install_srv -- name: Proxy - Install - ansible.builtin.include_tasks: "{{ansible_os_family}}/install-proxy.yml" - tags: - - install_proxy - when: role == "proxy" +# - name: Proxy - Install +# ansible.builtin.include_tasks: "{{ansible_os_family}}/install-proxy.yml" +# tags: +# - install_proxy +# when: role == "proxy" - name: Front - Install diff --git a/vars/RedHat.yml b/vars/RedHat.yml index 4e2145b..f409361 100644 --- a/vars/RedHat.yml +++ b/vars/RedHat.yml @@ -1,17 +1,19 @@ -repo: db: packages: - postgresql-server + - postgresql-contrib - postgresql - postgresql-plpython3 + - zabbix-sql-scripts - zabbix-agent2 + - zabbix-agent2-plugin-postgresql srv: packages: - zabbix-server-pgsql - - zabbix-sql-scripts - zabbix-selinux-policy - zabbix-agent2 + - keepalived agent: packages: - zabbix-agent2 @@ -20,6 +22,8 @@ front: - zabbix-web-pgsql - zabbix-nginx-conf - zabbix-agent2 + - zabbix-selinux-policy + - php-fpm proxy: packages: - mariadb