|
15 | 15 | - curl |
16 | 16 | - gnupg |
17 | 17 | - lsb-release |
| 18 | + - python3-debian |
18 | 19 | state: present |
19 | 20 | update_cache: true |
20 | 21 | when: ansible_facts['pkg_mgr'] == 'apt' |
21 | 22 |
|
22 | | -# --- Derive the PGDG suite from the host codename --- |
23 | | -# Examples: bookworm -> bookworm-pgdg, bullseye -> bullseye-pgdg, jammy -> jammy-pgdg, noble -> noble-pgdg |
24 | | -- name: Compute PGDG suite from distribution codename |
25 | | - ansible.builtin.set_fact: |
26 | | - postgresql_apt_suite: "{{ ansible_facts['distribution_release'] }}-pgdg" |
27 | | - when: ansible_facts['pkg_mgr'] == 'apt' |
| 23 | +- name: PostgreSQL | Add PostgreSQL repository (deb822) |
| 24 | + ansible.builtin.deb822_repository: |
| 25 | + name: postgresql |
| 26 | + types: ["deb"] |
| 27 | + uris: ["{{ postgresql_apt_repository_url }}"] |
| 28 | + suites: ["{{ ansible_distribution_release }}-pgdg"] |
| 29 | + components: ["main", "{{ postgresql_version }}"] |
| 30 | + signed_by: "{{ postgresql_apt_key_url }}" |
| 31 | + state: present |
| 32 | + when: |
| 33 | + - postgresql_install_repository |
| 34 | + - ansible_facts.packages.apt is defined |
| 35 | + - ansible_facts.packages.apt[0].version is version('2.4', '>=') |
28 | 36 |
|
29 | | -# --- Install the PGDG key into a keyring file --- |
30 | | -# This avoids deprecated apt_key usage and works with newer apt-secure expectations. |
31 | | -- name: Install PGDG keyring (dearmor GPG key into a file) |
32 | | - ansible.builtin.shell: | |
33 | | - install -d -m 0755 /usr/share/postgresql-common/pgdg |
34 | | - curl -fsSL {{ postgresql_apt_key_url }} \ |
35 | | - | gpg --dearmor -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.gpg |
36 | | - args: |
37 | | - creates: /usr/share/postgresql-common/pgdg/apt.postgresql.org.gpg |
38 | | - when: ansible_facts['pkg_mgr'] == 'apt' |
| 37 | +- name: PostgreSQL | Add PostgreSQL repository apt-key | apt |
| 38 | + apt_key: |
| 39 | + id: "{{ postgresql_apt_key_id }}" |
| 40 | + url: "{{ postgresql_apt_key_url }}" |
| 41 | + state: present |
| 42 | + keyring: /etc/apt/trusted.gpg.d/postgresql.gpg |
| 43 | + when: |
| 44 | + - postgresql_apt_key_url is defined and postgresql_apt_key_url | length > 0 |
| 45 | + - postgresql_apt_key_id is defined and postgresql_apt_key_id | length > 0 |
| 46 | + - postgresql_install_repository |
| 47 | + - ansible_facts.packages.apt[0].version is version('2.4', '<') |
39 | 48 |
|
40 | | -# --- Add the PGDG APT repository (HTTPS + signed-by) --- |
41 | | -# We explicitly build the repo line to ensure the correct suite and signed-by usage. |
42 | | -- name: Add PGDG APT repository |
43 | | - ansible.builtin.apt_repository: |
44 | | - repo: >- |
45 | | - deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.gpg] |
46 | | - {{ postgresql_apt_repo_base }} |
47 | | - {{ postgresql_apt_suite }} main |
48 | | - filename: pgdg |
| 49 | +- name: PostgreSQL | Add PostgreSQL repository | apt |
| 50 | + apt_repository: |
| 51 | + repo: "{{ postgresql_apt_repository }}" |
49 | 52 | state: present |
50 | 53 | when: |
51 | | - - ansible_facts['pkg_mgr'] == 'apt' |
52 | | - - (postgresql_install_repository | default(true)) | bool |
| 54 | + - postgresql_apt_repository | default('') != '' |
| 55 | + - postgresql_install_repository |
| 56 | + - ansible_facts.packages.apt[0].version is version('2.4', '<') |
53 | 57 |
|
54 | | -# --- Optional pinning (preferences) --- |
55 | | -- name: Add APT preferences for PGDG (pinning) |
56 | | - ansible.builtin.template: |
| 58 | +- name: PostgreSQL | Add PostgreSQL repository preferences | apt |
| 59 | + template: |
57 | 60 | src: etc_apt_preferences.d_apt_postgresql_org_pub_repos_apt.pref.j2 |
58 | 61 | dest: /etc/apt/preferences.d/apt_postgresql_org_pub_repos_apt.pref |
59 | 62 | when: |
|
74 | 77 | - (postgresql_apt_dependencies | default([])) | length > 0 |
75 | 78 |
|
76 | 79 | # --- Install PostgreSQL packages from PGDG --- |
77 | | -# Use default_release only if we know the suite; this avoids "invalid APT::Default-Release" errors. |
78 | 80 | - name: Install PostgreSQL server/client/contrib |
79 | 81 | ansible.builtin.apt: |
80 | 82 | name: |
|
84 | 86 | state: present |
85 | 87 | update_cache: true |
86 | 88 | cache_valid_time: "{{ apt_cache_valid_time | default(3600) }}" |
87 | | - default_release: >- |
88 | | - {{ postgresql_default_release |
89 | | - | default(postgresql_apt_suite | default(omit)) }} |
90 | 89 | environment: "{{ postgresql_env | default({}) }}" |
91 | 90 | when: ansible_facts['pkg_mgr'] == 'apt' |
92 | 91 |
|
|
0 commit comments