mirror of
https://pagure.io/fedora-infra/ansible.git
synced 2026-03-25 14:31:56 +08:00
db-koji01 is our only postgresql 15 install so far, but split out the config from the 12 one we are using on RHEL8 to avoid making changes there. Also, lets try tweaking things: - I am bumping cpus up to 88 - Tweak max workers/etc - Try a higher i/o level since this db server is running on a virthost with ssds. Signed-off-by: Kevin Fenzi <kevin@scrye.com>
235 lines
6.3 KiB
YAML
235 lines
6.3 KiB
YAML
---
|
|
#
|
|
# Setup postgresql server.
|
|
#
|
|
- name: on rhel8 hosts enable the postgresql 12 module.
|
|
copy:
|
|
dest: /etc/dnf/modules.d/postgresql.module
|
|
content: |
|
|
[postgresql]
|
|
name=postgresql
|
|
stream=12
|
|
profiles=
|
|
state=enabled
|
|
when: ansible_distribution_major_version|int >= 8 and ansible_distribution == 'RedHat' and not inventory_hostname.startswith(('db-fas01.stg','db-koji01'))
|
|
|
|
- name: on db-fas01 enable the postgresql 9.6 module.
|
|
copy:
|
|
dest: /etc/dnf/modules.d/postgresql.module
|
|
content: |
|
|
[postgresql]
|
|
name=postgresql
|
|
stream=9.6
|
|
profiles=
|
|
state=enabled
|
|
when: inventory_hostname.startswith('db-fas01')
|
|
|
|
- name: on db-koji01 enable the postgresql 15 module.
|
|
copy:
|
|
dest: /etc/dnf/modules.d/postgresql.module
|
|
content: |
|
|
[postgresql]
|
|
name=postgresql
|
|
stream=15
|
|
profiles=
|
|
state=enabled
|
|
when: inventory_hostname.startswith('db-koji01')
|
|
|
|
- name: install postgresql server packages (EL < 8)
|
|
package:
|
|
state: present
|
|
name:
|
|
- postgresql-server
|
|
- postgresql-contrib
|
|
- postgresql-plpython
|
|
- python-psycopg2
|
|
- pxz
|
|
when: ansible_distribution_major_version|int < 8 and ansible_distribution == 'RedHat'
|
|
tags:
|
|
- packages
|
|
- postgresql
|
|
|
|
- name: install postgresql server packages (Fedora)
|
|
package:
|
|
state: present
|
|
name:
|
|
- postgresql-server
|
|
- postgresql-contrib
|
|
- postgresql-plpython3
|
|
- python3-psycopg2
|
|
- pxz
|
|
when: ansible_distribution_major_version|int >= 29 and ansible_distribution == 'Fedora' and ansible_cmdline.ostree is not defined
|
|
tags:
|
|
- packages
|
|
- postgresql
|
|
|
|
- name: install postgresql server packages (EL >= 8)
|
|
package:
|
|
state: present
|
|
name:
|
|
- postgresql-server
|
|
- postgresql-contrib
|
|
- postgresql-plpython3
|
|
- python3-psycopg2
|
|
- pxz
|
|
when: ansible_distribution_major_version|int >= 8 and ansible_distribution == 'RedHat' and ansible_cmdline.ostree is not defined
|
|
tags:
|
|
- packages
|
|
- postgresql
|
|
|
|
- name: Set kernel shared memory max to a larger value
|
|
sysctl: name=kernel.shmmax value={{ kernel_shmmax }}
|
|
when: kernel_shmmax is defined
|
|
notify:
|
|
- restart postgresql
|
|
tags:
|
|
- postgresql
|
|
|
|
- name: Initialize postgres if necessary
|
|
command: /usr/bin/postgresql-setup initdb
|
|
creates=/var/lib/pgsql/data/postgresql.conf
|
|
notify:
|
|
- restart postgresql
|
|
tags:
|
|
- postgresql
|
|
|
|
- name: Set postgresql-server to run on boot
|
|
service: name=postgresql enabled=yes
|
|
ignore_errors: true
|
|
notify:
|
|
- restart postgresql
|
|
tags:
|
|
- service
|
|
- postgresql
|
|
|
|
- name: Add our postgres config file.
|
|
copy: >
|
|
src={{ item }}
|
|
dest=/var/lib/pgsql/data/{{ item }}
|
|
owner=postgres
|
|
with_items:
|
|
- pg_hba.conf
|
|
notify:
|
|
- restart postgresql
|
|
tags:
|
|
- config
|
|
- postgresql
|
|
|
|
- name: postgresql config template (el7 / postgresql 9.2)
|
|
template: dest=/var/lib/pgsql/data/postgresql.conf src=postgresql.conf
|
|
when: ansible_distribution_major_version|int < 8 and ansible_distribution == 'RedHat'
|
|
notify:
|
|
- restart postgresql
|
|
tags:
|
|
- config
|
|
- postgresql
|
|
|
|
- name: postgresql config template (Fedora / el8 / postgresql 12)
|
|
template: dest=/var/lib/pgsql/data/postgresql.conf src=postgresql.conf-12
|
|
when: (ansible_distribution_major_version|int == 8 and ansible_distribution == 'RedHat') or ansible_distribution != 'RedHat'
|
|
notify:
|
|
- restart postgresql
|
|
tags:
|
|
- config
|
|
- postgresql
|
|
|
|
- name: postgresql config template (el9 / postgresql 15)
|
|
template: dest=/var/lib/pgsql/data/postgresql.conf src=postgresql.conf-15
|
|
when: (ansible_distribution_major_version|int == 9 and ansible_distribution == 'RedHat')
|
|
notify:
|
|
- restart postgresql
|
|
tags:
|
|
- config
|
|
- postgresql
|
|
|
|
- name: Ensure postgres has a place to backup to
|
|
file: dest=/backups state=directory owner=postgres
|
|
tags:
|
|
- postgresql
|
|
|
|
- name: Copy over backup scriplet
|
|
copy: src=backup-database dest=/usr/local/bin/backup-database mode=0755
|
|
when: not inventory_hostname.startswith('db-koji01.iad2')
|
|
tags:
|
|
- postgresql
|
|
|
|
- name: Copy over backup scriplet
|
|
copy: src=backup-database.db-koji01 dest=/usr/local/bin/backup-database mode=0755
|
|
when: inventory_hostname.startswith('db-koji01.iad2')
|
|
tags:
|
|
- postgresql
|
|
|
|
- name: Copy over anitya public backup scriplet
|
|
copy: src=backup-database.anitya dest=/usr/local/bin/backup-database.anitya mode=0755
|
|
tags:
|
|
- postgresql
|
|
when: inventory_hostname.startswith('db01.phx2') or inventory_hostname.startswith('db01.iad2')
|
|
|
|
- name: Copy over anitya publib backup cron
|
|
copy: src=cron-backup-anitya-public dest=/etc/cron.d/cron-backup-anitya-public mode=0644
|
|
tags:
|
|
- postgresql
|
|
when: inventory_hostname.startswith('db01.phx2') or inventory_hostname.startswith('db01.iad2')
|
|
|
|
- name: Set up some cronjobs to backup databases as configured
|
|
template: >
|
|
src=cron-backup-database
|
|
dest=/etc/cron.d/cron-backup-database-{{ item }}
|
|
with_items:
|
|
- "{{ dbs_to_backup }}"
|
|
when: dbs_to_backup != []
|
|
tags:
|
|
- cron
|
|
- postgresql
|
|
|
|
#- name: install script to kill long running pgsql jobs
|
|
# copy: >
|
|
# src=kill_idle_xact_92.sh
|
|
# dest=/usr/local/bin/kill_idle_xact_92.sh
|
|
# mode=0755
|
|
# when: inventory_hostname.startswith('db-koji01')
|
|
# tags:
|
|
# - cron
|
|
# - postgresql
|
|
#
|
|
#- name: Set up a cron job to kill long postresql queries
|
|
# copy: >
|
|
# src=koji-cleanup-locks.cron
|
|
# dest=/etc/cron.d/koji-cleanup-locks.cron
|
|
# when: inventory_hostname.startswith('db-koji01')
|
|
# tags:
|
|
# - cron
|
|
# - postgresql
|
|
#
|
|
- name: Set up a script for cron job to clean long fas sessions on fas database server only
|
|
copy: >
|
|
src=fasdb-cleanup-sessions
|
|
dest=/usr/local/bin/fasdb-cleanup-sessions
|
|
mode=755
|
|
when: inventory_hostname.startswith('db-fas01')
|
|
tags:
|
|
- cron
|
|
- postgresql
|
|
|
|
- name: Set up a cron job to clean long fas sessions on fas database server only
|
|
copy: >
|
|
src=fasdb-cleanup-sessions.cron
|
|
dest=/etc/cron.d/fasdb-cleanup-sessions.cron
|
|
when: inventory_hostname.startswith('db-fas01')
|
|
tags:
|
|
- cron
|
|
- postgresql
|
|
|
|
- name: Set up datanommer/datagrepper SAR script
|
|
copy: >
|
|
src=datagrepper_sar.py
|
|
dest=/usr/local/bin/datagrepper_sar.py mode=0700
|
|
when: inventory_hostname.startswith('db-datanommer01')
|
|
tags:
|
|
- postgresql
|
|
- SAR
|
|
- GBDR
|
|
|
|
- import_tasks: datanommer.yml
|
|
when: inventory_hostname.startswith('db-datanommer02') or (env == "staging" and inventory_hostname.startswith('db-datanommer'))
|