--- - name: "Gather service facts" ansible.builtin.service_facts: # ------------------ MariaDB Specific Tasks ------------------ - name: "Install MariaDB server" ansible.builtin.apt: name: mariadb-server state: present update_cache: yes when: db_engine == 'mariadb' - name: "Ensure MariaDB service is running and enabled (when selected)" ansible.builtin.service: name: mariadb state: started enabled: yes when: db_engine == 'mariadb' - name: "Ensure MariaDB service is stopped and disabled (when NOT selected)" ansible.builtin.service: name: mariadb state: stopped enabled: no when: - db_engine != 'mariadb' - "'mariadb' in ansible_facts.services" # ------------------ MySQL Specific Tasks ------------------ - name: "Install MySQL server" ansible.builtin.apt: name: mysql-server state: present update_cache: yes when: db_engine == 'mysql' - name: "Ensure MySQL service is running and enabled (when selected)" ansible.builtin.service: name: mysql state: started enabled: yes when: db_engine == 'mysql' - name: "Ensure MySQL service is stopped and disabled (when NOT selected)" ansible.builtin.service: name: mysql state: stopped enabled: no when: - db_engine != 'mysql' - "'mysql' in ansible_facts.services" # ------------------ PostgreSQL Specific Tasks ------------------ - name: "Install PostgreSQL server and dependencies" ansible.builtin.apt: name: - postgresql - postgresql-contrib - python3-psycopg2 state: present update_cache: yes when: db_engine == 'postgres' - name: "Ensure PostgreSQL service is running and enabled (when selected)" ansible.builtin.service: name: postgresql state: started enabled: yes when: db_engine == 'postgres' - name: "Ensure PostgreSQL service is stopped and disabled (when NOT selected)" ansible.builtin.service: name: postgresql state: stopped enabled: no when: - db_engine != 'postgres' - "'postgresql' in ansible_facts.services" - name: "Create the global Lenverge PostgreSQL user" community.postgresql.postgresql_user: name: "{{ db_credentials.user }}" password: "{{ db_credentials.password }}" priv: "ALL" state: present become: yes become_user: postgres when: db_engine == 'postgres' and db_credentials is defined # --- Common Tasks for MySQL/MariaDB --- - name: "Install Python dependencies for MySQL/MariaDB management" ansible.builtin.apt: name: python3-pymysql state: present when: db_engine == 'mariadb' or db_engine == 'mysql' - name: "Create the global Lenverge database user" community.mysql.mysql_user: name: "{{ db_credentials.user }}" password: "{{ db_credentials.password }}" priv: "*.*:ALL,GRANT" host: "%" state: present login_unix_socket: /var/run/mysqld/mysqld.sock when: (db_engine == 'mariadb' or db_engine == 'mysql') and db_credentials is defined