2021-02-03 10:43:08 -05:00
|
|
|
---
|
2021-12-17 17:11:49 -05:00
|
|
|
- name: Template postgresql-13.conf file
|
|
|
|
template:
|
2021-12-17 17:34:54 -05:00
|
|
|
src: /srv/newsblur/docker/postgres/postgresql-13.conf.j2
|
2022-01-07 10:07:19 -05:00
|
|
|
dest: /srv/newsblur/docker/postgres/postgres.conf
|
2021-12-17 17:11:49 -05:00
|
|
|
notify: reload postgres
|
|
|
|
register: updated_config
|
|
|
|
|
2022-05-27 06:58:32 -04:00
|
|
|
- name: Create Postgres docker volumes with correct permissions
|
2022-01-07 10:07:19 -05:00
|
|
|
file:
|
2022-05-27 06:58:32 -04:00
|
|
|
path: "{{ item }}"
|
2022-01-07 10:07:19 -05:00
|
|
|
state: directory
|
2022-05-27 06:58:32 -04:00
|
|
|
recurse: yes
|
|
|
|
owner: "{{ ansible_effective_user_id|int }}"
|
2024-01-27 23:11:36 -05:00
|
|
|
group: "{{ ansible_effective_group_id|int }}"
|
2022-05-27 06:58:32 -04:00
|
|
|
with_items:
|
|
|
|
- /srv/newsblur/docker/volumes/postgres/archive
|
2022-06-05 08:55:58 -04:00
|
|
|
- /srv/newsblur/docker/volumes/postgres/backups
|
2022-05-27 06:58:32 -04:00
|
|
|
- /srv/newsblur/docker/volumes/postgres/data
|
2022-04-30 07:24:46 -04:00
|
|
|
|
2024-01-27 23:11:36 -05:00
|
|
|
- name: Template postgres secondaries with empty standby.signal file
|
|
|
|
file:
|
|
|
|
path: /srv/newsblur/docker/volumes/postgres/data/standby.signal
|
|
|
|
state: file
|
|
|
|
owner: "{{ ansible_effective_user_id|int }}"
|
|
|
|
group: "{{ ansible_effective_group_id|int }}"
|
|
|
|
when: (inventory_hostname | regex_replace('\-?[0-9]+', '')) in ['db-postgres-secondary', 'hdb-postgres']
|
|
|
|
|
|
|
|
- name: Copy SSH private key
|
|
|
|
copy:
|
|
|
|
src: /srv/secrets-newsblur/keys/postgres.key
|
|
|
|
dest: /home/nb/.ssh/id_rsa
|
|
|
|
owner: "{{ ansible_effective_user_id|int }}"
|
|
|
|
group: "{{ ansible_effective_group_id|int }}"
|
|
|
|
mode: "0600"
|
|
|
|
|
|
|
|
- name: Copy SSH public key
|
|
|
|
copy:
|
|
|
|
src: /srv/secrets-newsblur/keys/postgres.key.pub
|
|
|
|
dest: /home/nb/.ssh/id_rsa.pub
|
|
|
|
owner: "{{ ansible_effective_user_id|int }}"
|
|
|
|
group: "{{ ansible_effective_group_id|int }}"
|
|
|
|
mode: "0600"
|
|
|
|
|
|
|
|
- name: Add SSH public key to authorized keys
|
|
|
|
authorized_key:
|
|
|
|
user: "nb"
|
|
|
|
state: present
|
|
|
|
key: "{{ lookup('file', '/srv/secrets-newsblur/keys/postgres.key.pub') }}"
|
|
|
|
|
|
|
|
- name: Build the custom postgres docker image
|
|
|
|
docker_image:
|
|
|
|
name: newsblur/postgres:13
|
|
|
|
build:
|
|
|
|
path: /srv/newsblur/docker/postgres/Dockerfile.postgres
|
|
|
|
pull: yes
|
|
|
|
force_tag: yes
|
|
|
|
state: present
|
|
|
|
|
2021-12-13 17:09:37 -05:00
|
|
|
- name: Start postgres docker containers
|
2021-02-03 10:43:08 -05:00
|
|
|
docker_container:
|
|
|
|
name: postgres
|
2024-01-27 23:11:36 -05:00
|
|
|
image: newsblur/postgres:13
|
2021-02-03 10:43:08 -05:00
|
|
|
state: started
|
2021-12-13 17:09:37 -05:00
|
|
|
container_default_behavior: no_defaults
|
2022-01-07 10:07:19 -05:00
|
|
|
command: postgres -c config_file=/etc/postgresql/postgresql.conf
|
2021-02-03 10:43:08 -05:00
|
|
|
env:
|
2022-01-07 10:07:19 -05:00
|
|
|
# POSTGRES_USER: "{{ postgres_user }}" # Don't auto-create newsblur, manually add it
|
2021-12-17 17:34:54 -05:00
|
|
|
POSTGRES_PASSWORD: "{{ postgres_password }}"
|
2021-12-13 17:09:37 -05:00
|
|
|
hostname: "{{ inventory_hostname }}"
|
|
|
|
networks_cli_compatible: yes
|
|
|
|
network_mode: default
|
|
|
|
networks:
|
|
|
|
- name: newsblurnet
|
2024-01-27 23:11:36 -05:00
|
|
|
aliases:
|
2021-12-17 16:53:28 -05:00
|
|
|
- postgres
|
2021-02-03 10:43:08 -05:00
|
|
|
ports:
|
2021-12-13 17:09:37 -05:00
|
|
|
- 5432:5432
|
2024-01-27 23:11:36 -05:00
|
|
|
user: "{{ ansible_effective_user_id|int }}:{{ ansible_effective_group_id|int }}"
|
2021-02-03 10:43:08 -05:00
|
|
|
volumes:
|
2022-05-02 09:32:35 -04:00
|
|
|
- /srv/newsblur/docker/volumes/postgres/data:/var/lib/postgresql/data
|
|
|
|
- /srv/newsblur/docker/volumes/postgres/archive:/var/lib/postgresql/archive
|
|
|
|
- /srv/newsblur/docker/volumes/postgres/backups:/var/lib/postgresql/backups
|
2022-01-07 10:07:19 -05:00
|
|
|
- /srv/newsblur/docker/postgres/postgres.conf:/etc/postgresql/postgresql.conf
|
2021-12-17 17:11:49 -05:00
|
|
|
- /srv/newsblur/docker/postgres/postgres_hba-13.conf:/etc/postgresql/pg_hba.conf
|
2022-05-02 13:03:47 -04:00
|
|
|
- /srv/newsblur/docker/postgres/postgres_ident-13.conf:/etc/postgresql/pg_ident.conf
|
2024-01-27 23:11:36 -05:00
|
|
|
- /home/nb/.ssh/id_rsa:/var/lib/postgresql/.ssh/id_rsa
|
2021-12-13 17:09:37 -05:00
|
|
|
restart_policy: unless-stopped
|
2024-01-27 18:11:36 -05:00
|
|
|
when: (inventory_hostname | regex_replace('\-?[0-9]+', '')) in ['db-postgres-primary', 'db-postgres', 'hdb-postgres']
|
2021-06-07 15:44:59 -04:00
|
|
|
|
2024-01-27 23:11:36 -05:00
|
|
|
# - name: Change ownership in postgres docker container
|
|
|
|
# become: yes
|
|
|
|
# command: >
|
|
|
|
# docker exec postgres chown -fR postgres.postgres /var/lib/postgresql
|
|
|
|
# ignore_errors: yes
|
|
|
|
|
2022-01-07 10:07:19 -05:00
|
|
|
- name: Ensure newsblur role in postgres
|
2022-05-02 13:03:47 -04:00
|
|
|
become: yes
|
2022-01-07 10:07:19 -05:00
|
|
|
shell: >
|
2022-05-02 09:32:35 -04:00
|
|
|
sleep 15;
|
2022-01-07 10:07:19 -05:00
|
|
|
docker exec postgres createuser -s newsblur -U postgres;
|
|
|
|
docker exec postgres createdb newsblur -U newsblur;
|
|
|
|
register: ensure_role
|
2024-01-27 23:11:36 -05:00
|
|
|
ignore_errors: yes
|
2022-01-07 10:07:19 -05:00
|
|
|
changed_when:
|
2024-01-27 23:11:36 -05:00
|
|
|
- "ensure_role.rc == 0"
|
|
|
|
failed_when:
|
2022-01-07 10:07:19 -05:00
|
|
|
- "'already exists' not in ensure_role.stderr"
|
|
|
|
- "ensure_role.rc != 0"
|
|
|
|
|
2021-12-17 16:53:28 -05:00
|
|
|
- name: Register postgres in consul
|
|
|
|
tags: consul
|
|
|
|
become: yes
|
|
|
|
template:
|
|
|
|
src: consul_service.json
|
|
|
|
dest: /etc/consul.d/postgres.json
|
|
|
|
notify:
|
|
|
|
- reload consul
|
2021-06-27 14:11:14 -06:00
|
|
|
|
2022-02-03 15:41:35 -05:00
|
|
|
- name: Copy common secrets
|
|
|
|
copy:
|
|
|
|
src: /srv/secrets-newsblur/settings/common_settings.py
|
|
|
|
dest: /srv/newsblur/newsblur_web/local_settings.py
|
|
|
|
register: app_changed
|
|
|
|
|
2021-06-18 14:57:29 -06:00
|
|
|
- name: Add sanity checkers cronjob for disk usage
|
|
|
|
cron:
|
|
|
|
name: disk_usage_sanity_checker
|
2022-05-02 09:32:35 -04:00
|
|
|
minute: "0"
|
2021-06-27 13:24:07 -06:00
|
|
|
job: >-
|
2024-01-27 23:11:36 -05:00
|
|
|
OUTPUT=$(df / | head -n 2 | tail -1) docker run --rm -it -v /srv/newsblur:/srv/newsblur \
|
|
|
|
--network=newsblurnet --hostname {{ ansible_hostname }} newsblur/newsblur_python3 \
|
|
|
|
/srv/newsblur/utils/monitor_disk_usage.py $OUTPUT
|
2022-05-13 16:59:57 -04:00
|
|
|
tags: cron
|
|
|
|
|
|
|
|
- name: Add postgresql archive cleaner cronjob
|
|
|
|
cron:
|
|
|
|
name: postgres_archive_cleaner
|
|
|
|
minute: "0"
|
|
|
|
job: >-
|
|
|
|
sudo find /srv/newsblur/docker/volumes/postgres/archive -type f -mmin +180 -delete
|
|
|
|
tags: cron
|
2021-06-19 12:35:28 -06:00
|
|
|
|
2022-12-28 22:01:51 -05:00
|
|
|
- name: Add postgresql backup cleaner cronjob
|
|
|
|
cron:
|
|
|
|
name: postgres_backup_cleaner
|
|
|
|
minute: "0"
|
|
|
|
hour: "5"
|
|
|
|
job: >-
|
|
|
|
sudo find /srv/newsblur/docker/volumes/postgres/backups -type f -mmin +18000 -delete
|
|
|
|
tags: cron
|
|
|
|
|
2022-02-04 13:55:23 -05:00
|
|
|
- name: Add postgres backup log
|
|
|
|
become: yes
|
|
|
|
file:
|
|
|
|
path: /var/log/postgres_backup.log
|
|
|
|
state: touch
|
|
|
|
mode: 0777
|
2024-01-27 23:11:36 -05:00
|
|
|
owner: "{{ ansible_effective_user_id|int }}"
|
|
|
|
group: "{{ ansible_effective_group_id|int }}"
|
2022-02-04 13:55:23 -05:00
|
|
|
|
2021-06-19 12:35:28 -06:00
|
|
|
- name: Add postgres backup
|
|
|
|
cron:
|
|
|
|
name: postgres backup
|
|
|
|
minute: "0"
|
|
|
|
hour: "4"
|
2022-04-30 06:51:11 -04:00
|
|
|
job: /srv/newsblur/docker/postgres/backup_postgres.sh >> /var/log/postgres_backup.log 2>&1
|
2022-05-13 16:59:57 -04:00
|
|
|
tags: cron
|