From bab4a84b77187cda3a4cc2c604dfc64d3d301d7d Mon Sep 17 00:00:00 2001 From: Dmitriy Kuts Date: Sun, 7 Sep 2025 12:44:14 +0200 Subject: [PATCH] Support Debian 13 And migrate to deb822 --- .github/workflows/ci.yml | 1 + README.md | 19 ++++++++++--------- defaults/main.yml | 3 ++- molecule/README.md | 2 ++ tasks/install_apt.yml | 25 +++++++++++++++++++++++-- tasks/main.yml | 4 ++++ tests/vars.Debian.13.yml | 1 + vars/Debian_22.yml | 2 +- vars/trixie.yml | 6 ++++++ 9 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 tests/vars.Debian.13.yml create mode 100644 vars/trixie.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3b0a927fb..593cc8eb1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -48,6 +48,7 @@ jobs: # - distro: rockylinux9 - distro: debian11 - distro: debian12 + - distro: debian13 - distro: ubuntu2004 - distro: ubuntu2204 - distro: ubuntu2404 diff --git a/README.md b/README.md index a9e0bee0d..079f69d65 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Ansible role which installs and configures PostgreSQL, extensions, databases and #### Installation -This has been tested on Ansible 2.4.0 and higher. +This has been tested on Ansible 2.5.0 and higher. To install: @@ -55,14 +55,15 @@ An example how to include this role as a task: #### Compatibility matrix | Distribution / PostgreSQL | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -| ------------------------- | :--------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | -| Debian 11.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| Debian 12.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| Rockylinux 8.x | :no_entry: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | -| Rockylinux 9.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | -| Ubuntu 20.04.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| Ubuntu 22.04.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| Ubuntu 24.04.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| ------------------------ | :--------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | +| Debian 11.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Debian 12.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Debian 13.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Rockylinux 8.x | :no_entry: | :warning: | :warning: | :warning: | :warning: | :warning: | :warning: | +| Rockylinux 9.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :warning: | +| Ubuntu 20.04.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Ubuntu 22.04.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Ubuntu 24.04.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | - :white_check_mark: - works fine diff --git a/defaults/main.yml b/defaults/main.yml index 2776106c7..7b7875998 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -838,7 +838,8 @@ postgresql_install_repository: true # APT settings postgresql_apt_key_id: "ACCC4CF8" postgresql_apt_key_url: "https://www.postgresql.org/media/keys/ACCC4CF8.asc" -postgresql_apt_repository: "deb http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main {{ postgresql_version }}" +postgresql_apt_repository_url: "https://apt.postgresql.org/pub/repos/apt" +postgresql_apt_repository: "deb {{ postgresql_apt_repository_url }}/ {{ ansible_distribution_release }}-pgdg main {{ postgresql_version }}" # Pin-Priority of PGDG repository postgresql_apt_pin_priority: 500 diff --git a/molecule/README.md b/molecule/README.md index bcfb20564..1e5b6d928 100644 --- a/molecule/README.md +++ b/molecule/README.md @@ -14,6 +14,7 @@ The default distribution is ubuntu2204. You can override th with setting the env * fedora40 * debian11 * debian12 +* debian13 * ubuntu2004 * ubuntu2204 * ubuntu2404 @@ -46,6 +47,7 @@ The playbooks read variables from two files. One common vars file, and one with $ ls -1 tests/ | grep vars vars.Debian.11.yml vars.Debian.12.yml +vars.Debian.13.yml vars.Fedora.40.yml vars.Ubuntu.20.yml vars.Ubuntu.22.yml diff --git a/tasks/install_apt.yml b/tasks/install_apt.yml index 7ca888954..1c6883cea 100644 --- a/tasks/install_apt.yml +++ b/tasks/install_apt.yml @@ -7,19 +7,40 @@ pkg: ca-certificates state: present +- name: PostgreSQL | Add PostgreSQL repository (deb822) + ansible.builtin.deb822_repository: + name: postgresql + types: ["deb"] + uris: ["{{ postgresql_apt_repository_url }}"] + suites: ["{{ ansible_distribution_release }}-pgdg"] + components: ["main", "{{ postgresql_version }}"] + signed_by: "{{ postgresql_apt_key_url }}" + state: present + when: + - postgresql_install_repository + - ansible_facts.packages.apt is defined + - ansible_facts.packages.apt[0].version is version('2.4', '>=') + - name: PostgreSQL | Add PostgreSQL repository apt-key | apt apt_key: id: "{{ postgresql_apt_key_id }}" url: "{{ postgresql_apt_key_url }}" state: present keyring: /etc/apt/trusted.gpg.d/postgresql.gpg - when: postgresql_apt_key_url and postgresql_apt_key_id and postgresql_install_repository + when: + - postgresql_apt_key_url + - postgresql_apt_key_id + - postgresql_install_repository + - ansible_facts.packages.apt[0].version is version('2.4', '<') - name: PostgreSQL | Add PostgreSQL repository | apt apt_repository: repo: "{{ postgresql_apt_repository }}" state: present - when: postgresql_apt_repository | default('') != '' and postgresql_install_repository + when: + - postgresql_apt_repository | default('') != '' + - postgresql_install_repository + - ansible_facts.packages.apt[0].version is version('2.4', '<') - name: PostgreSQL | Add PostgreSQL repository preferences | apt template: diff --git a/tasks/main.yml b/tasks/main.yml index d932f3acb..1a524e3c9 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -16,6 +16,10 @@ - "../vars/empty.yml" tags: [always] +- name: Gather package facts + ansible.builtin.package_facts: + manager: apt + - import_tasks: install_apt.yml when: ansible_pkg_mgr == "apt" tags: [postgresql, postgresql-install] diff --git a/tests/vars.Debian.13.yml b/tests/vars.Debian.13.yml new file mode 100644 index 000000000..ed97d539c --- /dev/null +++ b/tests/vars.Debian.13.yml @@ -0,0 +1 @@ +--- diff --git a/vars/Debian_22.yml b/vars/Debian_22.yml index 273f70e25..ca1d39422 100644 --- a/vars/Debian_22.yml +++ b/vars/Debian_22.yml @@ -3,4 +3,4 @@ postgresql_service_name: "postgresql" -postgresql_apt_repository: "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main {{ postgresql_version }}" +postgresql_apt_repository: "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/postgresql.gpg] {{ postgresql_apt_repository_url }}/ {{ ansible_distribution_release }}-pgdg main {{ postgresql_version }}" diff --git a/vars/trixie.yml b/vars/trixie.yml new file mode 100644 index 000000000..3f8da58b8 --- /dev/null +++ b/vars/trixie.yml @@ -0,0 +1,6 @@ +--- +# PostgreSQL vars for Debian Trixie (13) + +postgresql_ext_postgis_deps: + - "postgresql-{{postgresql_version}}-postgis-3" + - "postgresql-{{postgresql_version}}-postgis-3-scripts" \ No newline at end of file