Skip to content

Commit

Permalink
Merge pull request #10 from fidanf/pgpool-archive
Browse files Browse the repository at this point in the history
Feat: Pgpool archive + version
  • Loading branch information
fidanf authored Aug 23, 2022
2 parents e9faa93 + ebed639 commit 5ce609d
Show file tree
Hide file tree
Showing 13 changed files with 70 additions and 35 deletions.
3 changes: 3 additions & 0 deletions .ansible-lint
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
# https://docs.ansible.com/ansible-lint/rules/default_rules.html
exclude_paths:
- ../.ansible/roles/
- ~/.cache/molecule/ansible-role-pgpool/default/roles/
- .cache/
- .github/
verbosity: 1
Expand All @@ -13,5 +14,7 @@ skip_list:
- empty-string-compare
- ignore-errors
- var-naming
- fqcn-builtins
- schema
warn_list:
- no-log-password
17 changes: 12 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ env:
global:
- VAGRANT_DEFAULT_PROVIDER: libvirt
- PY_COLORS: 1
jobs:
- MOLECULE_DISTRO: generic/ubuntu2004
- MOLECULE_DISTRO: generic/debian11

jobs:
include:
- env: MOLECULE_DISTRO=generic/ubuntu2004 PGPOOL_VERSION_DEBIAN=4.1.4-6.pgdg20.04+1
- env: MOLECULE_DISTRO=generic/debian11

cache:
directories:
Expand All @@ -24,12 +26,17 @@ before_install:
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install vagrant
sudo apt-get install -y build-essential qemu-kvm qemu-utils libvirt-dev libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager dnsmasq
CONFIGURE_ARGS="with-libvirt-include=/usr/share/libvirt with-libvirt-lib=/usr/lib64" sudo vagrant plugin install vagrant-libvirt
sudo -H -u travis \
CONFIGURE_ARGS="with-libvirt-include=/usr/share/libvirt with-libvirt-lib=/usr/lib64" vagrant plugin install vagrant-libvirt
- |
sudo usermod -aG libvirt travis
sudo usermod -aG kvm travis
vagrant --version
- |
sudo -H pip install --upgrade pip
sudo -H pip install --upgrade --ignore-installed --requirement requirements.txt
- |
molecule --version
script:
- sudo -E molecule test
- sudo -E molecule --debug test --destroy=never
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ Tested with :
- Ubuntu 18.04.x :heavy_check_mark:
- Ubuntu 20.04.x :heavy_check_mark:

> :warning: Only the major 4.1 is currently being handled and tested by this role.
Work is in progress to integrate the latest 4.3 which breaks a lot of current things.
For example, to install the version [4.1.4](https://www.pgpool.net/docs/42/en/html/release-4-1-4.html), Debian 11 hosts should set `pgpool_version_debian: 4.1.4-6.pgdg110+1`, whereas Ubuntu 20.04 hosts should rather use `pgpool_version_debian: 4.1.4-6.pgdg20.04+1`.

---

- [PgPool](#pgpool)
Expand Down
15 changes: 0 additions & 15 deletions ansible.cfg

This file was deleted.

16 changes: 13 additions & 3 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
pgpool_apt_install: yes
pgpool_apt_key_id: "ACCC4CF8"
pgpool_apt_key_url: "https://www.postgresql.org/media/keys/ACCC4CF8.asc"
pgpool_apt_repository: "deb http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main"
pgpool_apt_repository: "deb http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main {{ pgpool_postgresql_version }}"
pgpool_apt_archive_repositories:
- "deb https://apt-archive.postgresql.org/pub/repos/apt {{ ansible_distribution_release }}-pgdg-archive main"
- "deb-src https://apt-archive.postgresql.org/pub/repos/apt {{ ansible_distribution_release }}-pgdg-archive main"
pgpool_apt_pin_priority: 500
pgpool_apt_dependencies:
- postgresql-client-{{ pgpool_postgresql_version }}
Expand All @@ -12,13 +15,20 @@ pgpool_apt_dependencies:
pgpool_extensions:
- pgpool_recovery
- pgpool_adm
pgpool_postgresql_version: 12
# Set this variable if you want to install a specific version list in the apt repositories
# Example : 4.1.4-6.pgdg110+1
# pgpool_version_debian: ''

# postgresql related variables
# The major version of your pgpool backends
# See follow_master and recovery_1st_stage bash scripts
pgpool_postgresql_version: 13
pgpool_postgresql_cluster_name: main
pgpool_postgresql_service_user: postgres
pgpool_postgresql_service_group: postgres
pgpool_postgres_password_cleartext: postgres
pgpool_postgresql_home_directory: /var/lib/postgresql
pgpool_postgresql_data_directory: "{{ pgpool_postgresql_home_directory }}/{{ pgpool_postgresql_version }}/{{ pgpool_postgresql_cluster_name }}"
pgpool_postgres_password_cleartext: postgres

# systemd
pgpool_systemd_state: started
Expand Down
4 changes: 2 additions & 2 deletions handlers/main.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
- name: restart rsyslog
- name: Restart rsyslog
systemd:
name: rsyslog
state: restarted
daemon_reload: yes

- name: reload pgpool2
- name: Reload pgpool2
systemd:
name: pgpool2
state: reloaded
Expand Down
2 changes: 1 addition & 1 deletion molecule/default/converge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
roles:
- name: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}"
vars:
pgpool_postgresql_version: 12
pgpool_postgresql_version: 13
# .pcpass file
pgpool_pcppass_entries:
- hostname: pgsql01
Expand Down
5 changes: 4 additions & 1 deletion molecule/default/molecule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ provisioner:
name: ansible
log: true
inventory:
group_vars:
pgpool:
pgpool_version_debian: ${PGPOOL_VERSION_DEBIAN:-"4.1.4-6.pgdg110+1"}
host_vars:
pgsql01:
# ansible
Expand Down Expand Up @@ -73,7 +76,7 @@ provisioner:
- hostname: pgsql01
config_options:
defaults:
callback_whitelist: "profile_tasks,timer"
callbacks_enabled: "profile_tasks,timer"
allow_world_readable_tmpfiles: true
interpreter_python: /usr/bin/python3
pipelining: true
5 changes: 4 additions & 1 deletion molecule/default/prepare.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@
name: acl

roles:
- name: fidanf.postgresql_ha
# working around wrong ANSIBLE_ROLES_PATH built by the current molecule version
- name: "{{ lookup('env','MOLECULE_EPHEMERAL_DIRECTORY') }}/roles/fidanf.postgresql_ha"
vars:
# repmgr
repmgr_version: 5.3
repmgr_master: pgsql01
repmgr_target_group: pgpool
Expand All @@ -49,6 +51,7 @@
repmgr_monitoring_history: "yes"
repmgr_connection_check_type: query
repmgr_log_level: INFO
# postgresql.conf
postgresql_version: 13
postgresql_listen_addresses: "*"
postgresql_port: 5432
Expand Down
10 changes: 10 additions & 0 deletions molecule/default/verify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@
pgpool_user: pgpool

tasks:
- name: Gather the package facts
ansible.builtin.package_facts:
manager: auto

- name: Ensure pgpool2 version matches pgpool_version_debian
assert:
that: ansible_facts.packages['pgpool2'][0]['version'] == pgpool_version_debian
success_msg: Installed pgpool2 version '{{ ansible_facts.packages['pgpool2'][0]['version'] }}' matches pgpool_version_debian
fail_msg: There is mismatch between the expected and the installed version!

- name: Start Pg-Pool II
systemd:
name: pgpool2
Expand Down
16 changes: 13 additions & 3 deletions tasks/_apt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,27 @@
repo: "{{ pgpool_apt_repository }}"
state: present

- name: Apt | Add PostgreSQL archive repository
apt_repository:
repo: "{{ item }}"
state: present
filename: apt-archive.postgresql.org
loop: "{{ pgpool_apt_archive_repositories }}"

- name: Apt | Add PostgreSQL repository preferences
template:
src: apt_postgresql_org_pub_repos_apt.j2
dest: /etc/apt/preferences.d/apt_postgresql_org_pub_repos_apt.pref
mode: 0644

- name: Apt | Define PgPool version to be installed
set_fact:
pgpool2_apt: pgpool2={{ pgpool_version_debian }}
when: pgpool_version_debian is defined

- name: Apt | Install PgPool
apt:
name:
- pgpool2
- postgresql-{{ pgpool_postgresql_version }}-pgpool2
name: "{{ pgpool2_apt | default('pgpool2') }}"
state: present
update_cache: yes
default_release: "{{ ansible_distribution_release + '-pgdg' }}"
Expand Down
2 changes: 1 addition & 1 deletion tasks/_configure.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
owner: "{{ pgpool_user }}"
group: "{{ pgpool_group }}"
mode: 0775
notify: reload pgpool2
notify: Reload pgpool2

- name: Configure | Upload pool_hba.conf
template:
Expand Down
6 changes: 3 additions & 3 deletions tasks/_syslog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
regex: ^SyslogFacility=
line: SyslogFacility={{ pgpool_syslog_facility | lower }}
mode: 0644
notify: reload pgpool2
notify: Reload pgpool2

- name: Syslog | Patch rsyslog obsolete configuration
lineinfile:
Expand All @@ -45,14 +45,14 @@
- PrivDropToUser
- PrivDropToGroup
when: pgpool_patch_syslog is defined and pgpool_patch_syslog | bool
notify: restart rsyslog
notify: Restart rsyslog

- name: Syslog | Update rsyslog configuration
template:
src: rsyslog.pgpool.conf.j2
dest: /etc/rsyslog.d/pgpool.conf
mode: 0644
notify: restart rsyslog
notify: Restart rsyslog

- name: Syslog | Create cron task for faster rotation checks
cron:
Expand Down

0 comments on commit 5ce609d

Please sign in to comment.