self-hosting/roles/mailserver_database/tasks/main.yml

58 lines
1.4 KiB
YAML

---
- name: Install needed packages
become: true
ansible.builtin.apt:
name:
- postgresql
- postfix-pgsql
- python3-psycopg2
- acl
- name: Create postgresql users
become: true
become_user: postgres
loop:
- "{{ mailserver_database.admin_user }}"
- "{{ mailserver_database.ro_user }}"
community.postgresql.postgresql_user:
name: "{{ item.name }}"
state: present
password: "{{ item.pwd }}"
- name: Create postgresql database
become: true
become_user: postgres
community.postgresql.postgresql_db:
name: "{{ mailserver_database.db }}"
owner: "{{ mailserver_database.admin_user.name }}"
state: present
- name: Upload postgresql tables script
become: true
become_user: postgres
ansible.builtin.template:
src: tables.sql.j2
dest: ~/mailserver_tables.sql
mode: "600"
notify: Create postgresql tables
- name: Make sure tables are created before setting permissions
ansible.builtin.meta: flush_handlers
- name: Set privileges for postgresql RO user
become: true
become_user: postgres
community.postgresql.postgresql_privs:
database: "{{ mailserver_database.db }}"
roles: "{{ mailserver_database.ro_user.name }}"
privs: select
objs: ALL_IN_SCHEMA
state: present
- name: Upload manage-mailserver.sh script
become: true
ansible.builtin.template:
src: manage-mailserver.sh.j2
dest: /usr/local/bin/manage-mailserver.sh
mode: "700"