diff options
Diffstat (limited to 'roles/postgres')
| -rw-r--r-- | roles/postgres/defaults/main.yml | 5 | ||||
| -rw-r--r-- | roles/postgres/tasks/create_db.yml | 4 | ||||
| -rw-r--r-- | roles/postgres/tasks/create_user.yml | 4 | ||||
| -rw-r--r-- | roles/postgres/tasks/main.yml | 52 | 
4 files changed, 65 insertions, 0 deletions
diff --git a/roles/postgres/defaults/main.yml b/roles/postgres/defaults/main.yml new file mode 100644 index 0000000..963e594 --- /dev/null +++ b/roles/postgres/defaults/main.yml @@ -0,0 +1,5 @@ +postgres_dir: /data/postgresql +postgres_default_dir: /var/postgresql +postgres_user: _postgresql +postgres_group: _postgresql +postgres_db_user: postgres diff --git a/roles/postgres/tasks/create_db.yml b/roles/postgres/tasks/create_db.yml new file mode 100644 index 0000000..9adb6ee --- /dev/null +++ b/roles/postgres/tasks/create_db.yml @@ -0,0 +1,4 @@ +- name: ensure miniflux database exists +  shell: createdb -U postgres -O "{{ postgres_db_user }}" "{{ postgres_db_name }}" +  register: result +  failed_when: result.rc != 0 and "already exists" not in result.stderr diff --git a/roles/postgres/tasks/create_user.yml b/roles/postgres/tasks/create_user.yml new file mode 100644 index 0000000..123070d --- /dev/null +++ b/roles/postgres/tasks/create_user.yml @@ -0,0 +1,4 @@ +- name: ensure miniflux db user exists +  shell: createuser -U postgres "{{ postgres_db_user }}" +  register: result +  failed_when: result.rc != 0 and "already exists" not in result.stderr diff --git a/roles/postgres/tasks/main.yml b/roles/postgres/tasks/main.yml new file mode 100644 index 0000000..d8fe000 --- /dev/null +++ b/roles/postgres/tasks/main.yml @@ -0,0 +1,52 @@ +- name: install postgres +  package: +    name: +      - postgresql-server +      - postgresql-contrib +    state: present + +- name: create postgres directories +  file: +    path: "{{ postgres_dir }}/{{ item }}" +    owner: "{{ postgres_user }}" +    group: "{{ postgres_group }}" +    mode: 0750 +    state: directory +  loop: +    - "" +    - "data" + +- name: delete default data dir if exists +  file: +    path: "{{ postgres_default_dir }}" +    state: absent +  when: postgres_dir != "/var/postgresql" + +- name: link postgres directory to default one +  file: +    src: "{{ postgres_dir }}" +    dest: "{{ postgres_default_dir }}" +    owner: "{{ postgres_user }}" +    group: "{{ postgres_group }}" +    state: link +    mode: 0750 +    follow: false +  when: postgres_dir != "/var/postgresql" + +  # NOTE: this tasks needs `pipelining` set to `false` to work correctly +- name: init postgres database +  command: +    cmd: initdb -D "{{ postgres_dir }}/data/" -U "{{ postgres_db_user }}" --encoding=UTF-8 --locale=en_US.UTF-8 +    chdir: "{{ postgres_dir }}" +  register: result +  become: true +  become_user: "{{ postgres_user }}" +  failed_when: +    - result.rc != 0 +    - "'exists but is not empty' not in result.stderr" + +- name: enable and restart postgres service +  service: +    name: postgresql +    state: restarted +    enabled: true  |