diff --git a/README.md b/README.md index 5bfeff9..7a2a1e4 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,12 @@ -# ansible-role-postgresql +# Ansible Role PostgreSQL +Ansible Role to install postgresql and create database with user + +Can be used to be included inside other roles to create databases. + +Variables: +* postgresql_database -> Name of the database +* postgresql_password -> Name of the database +* postgresql_username -> Name of the database user + +Variables have no defaults (imagine a default pw which would be everywhere!!!) and role will not do anything if not all variables given \ No newline at end of file diff --git a/tasks/main.yaml b/tasks/main.yaml new file mode 100644 index 0000000..6221535 --- /dev/null +++ b/tasks/main.yaml @@ -0,0 +1,42 @@ +--- +- name: Display Message when variables not defined + debug: + msg: "Please define postgresql_database, postgresql_username AND postgresql_password and none of them empty" + when: postgresql_database is not defined or postgresql_database == "" or postgresql_username is not defined or postgresql_username == "" or postgresql_password is not defined or postgresql_password == "" + +- name: Check for variables + ansible.builtin.command: /bin/false + when: postgresql_database is not defined or postgresql_database == "" or postgresql_username is not defined or postgresql_username == "" or postgresql_password is not defined or postgresql_password == "" + +- name: Install postgresql and ansible-dependencies + apt: + name: + - postgresql + - python3-psycopg2 + update_cache: yes + +- name: Create database + community.postgresql.postgresql_db: + name: "{{ postgresql_database }}" + encoding: UTF-8 + lc_collate: C + lc_ctype: C + template: template0 + become_user: postgres + +- name: create database user + community.postgresql.postgresql_user: + db: "{{ postgresql_database }}" + name: "{{ postgresql_username }}" + password: "{{ postgresql_password }}" + expires: infinity + become_user: postgres + +- name: Grant all privs to user to database + community.postgresql.postgresql_privs: + db: "{{ postgresql_database }}" + privs: ALL + type: database + obj: "{{ postgresql_database }}" + role: "{{ postgresql_username }}" + become_user: postgres