mirror of
https://gitea.0xace.cc/ansible-galaxy/patroni.git
synced 2025-06-29 02:53:07 +00:00
add Debian os family support
This commit is contained in:
@ -1,69 +1,3 @@
|
||||
- name: Add gpg package
|
||||
apt:
|
||||
name: gpg
|
||||
|
||||
- name: Add gpg keys for patroni
|
||||
ansible.builtin.apt_key:
|
||||
url: "{{ item.url }}"
|
||||
keyring: "{{ item.keyring }}"
|
||||
loop: "{{ patroni_apt_key }}"
|
||||
|
||||
- name: Add Patroni repository
|
||||
apt_repository:
|
||||
repo: "{{ item.repo }}"
|
||||
state: present
|
||||
filename: "{{ item.filename }}"
|
||||
update_cache: yes
|
||||
loop: "{{ patroni_apt_repository }}"
|
||||
|
||||
- name: Check if PostgreSQL is installed
|
||||
ansible.builtin.shell: dpkg-query -l {{ patroni_postgresql_package_name }} 2>&1 | grep {{ patroni_postgresql_version }}
|
||||
ignore_errors: True
|
||||
register: is_patroni_postgresql
|
||||
changed_when: is_patroni_postgresql.rc != 0
|
||||
failed_when: False
|
||||
|
||||
- name: Mask PostgreSQL before install
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ patroni_postgresql_package_name }}"
|
||||
masked: yes
|
||||
when: is_patroni_postgresql.rc != 0
|
||||
|
||||
- name: "Install {{ patroni_postgresql_package_name }}-{{ patroni_postgresql_version }}"
|
||||
apt:
|
||||
name: "{{ patroni_postgresql_package }}"
|
||||
update_cache: yes
|
||||
register: patroni_postgresql_setup
|
||||
when: is_patroni_postgresql.rc != 0
|
||||
|
||||
- name: Unmask PostgreSQL after install
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ patroni_postgresql_package_name }}"
|
||||
masked: no
|
||||
when: is_patroni_postgresql.rc != 0
|
||||
|
||||
- name: Check if Patroni is installed
|
||||
ansible.builtin.shell: dpkg-query -l {{ patroni_package_name }} 2>&1 | grep {{ patroni_version }}
|
||||
ignore_errors: True
|
||||
register: is_patroni
|
||||
changed_when: is_patroni.rc != 0
|
||||
failed_when: False
|
||||
|
||||
- name: Mask Patroni before install
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ patroni_package_name }}"
|
||||
masked: yes
|
||||
when: is_patroni.rc != 0
|
||||
|
||||
- name: "Install {{ patroni_package_name }}-{{ patroni_version }}"
|
||||
apt:
|
||||
name: "{{ patroni_package }}"
|
||||
update_cache: yes
|
||||
register: patroni_setup
|
||||
when: is_patroni.rc != 0
|
||||
|
||||
- name: Unmask Patroni after install
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ patroni_package_name }}"
|
||||
masked: no
|
||||
when: is_patroni.rc != 0
|
||||
- name: "Install Patroni {{ patroni_version }}"
|
||||
include_tasks: patroni_install.yaml
|
||||
tags: patroni_install
|
||||
|
37
tasks/Debian/patroni_install.yaml
Normal file
37
tasks/Debian/patroni_install.yaml
Normal file
@ -0,0 +1,37 @@
|
||||
- name: Gather packages
|
||||
package_facts:
|
||||
manager: auto
|
||||
|
||||
- name: Set fact about Patroni package
|
||||
set_fact:
|
||||
patroni_installed_package: "{{ ansible_facts.packages[patroni_package_name][0]['name'] }}"
|
||||
when: patroni_package_name in ansible_facts.packages
|
||||
|
||||
- name: Print installed Patroni version
|
||||
debug:
|
||||
msg: "{{ ansible_facts.packages[patroni_package_name][0]['version'] }}"
|
||||
verbosity: 2
|
||||
when: patroni_installed_package is defined
|
||||
|
||||
- name: Mask Patroni before install
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ patroni_unit_name }}"
|
||||
masked: yes
|
||||
when: patroni_package_name not in ansible_facts.packages or ansible_facts.packages[patroni_package_name][0]['version'] != (patroni_version|string + "-" + patroni_version_build|string)
|
||||
|
||||
- name: "Install {{ patroni_package_name }}-{{ patroni_version }}-{{ patroni_version_build }}"
|
||||
apt:
|
||||
name: "{{ patroni_package }}"
|
||||
update_cache: yes
|
||||
register: patroni_setup
|
||||
when: patroni_package_name not in ansible_facts.packages
|
||||
|
||||
- name: "Update {{ patroni_package_name }}-{{ patroni_version }}-{{ patroni_version_build }}"
|
||||
apt:
|
||||
name: "{{ patroni_package }}"
|
||||
update_cache: yes
|
||||
register: patroni_update
|
||||
notify: Restart Patroni
|
||||
when:
|
||||
- patroni_package_name in ansible_facts.packages
|
||||
- ansible_facts.packages[patroni_package_name][0]['version'] != (patroni_version|string + "-" + patroni_version_build|string)
|
20
tasks/Debian/patroni_repos_and_deps.yaml
Normal file
20
tasks/Debian/patroni_repos_and_deps.yaml
Normal file
@ -0,0 +1,20 @@
|
||||
- name: Install deps packages
|
||||
apt:
|
||||
name: "{{ patroni_deps_packages }}"
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
- name: Add gpg keys for patroni
|
||||
ansible.builtin.apt_key:
|
||||
url: "{{ item.url }}"
|
||||
keyring: "{{ item.keyring }}"
|
||||
loop: "{{ patroni_apt_key }}"
|
||||
|
||||
- name: Add Patroni repository
|
||||
apt_repository:
|
||||
repo: "{{ item.repo }}"
|
||||
state: present
|
||||
filename: "{{ item.filename }}"
|
||||
update_cache: yes
|
||||
loop: "{{ patroni_apt_repository }}"
|
||||
|
52
tasks/Debian/postgresql_install.yaml
Normal file
52
tasks/Debian/postgresql_install.yaml
Normal file
@ -0,0 +1,52 @@
|
||||
- name: Install postgresql-common
|
||||
apt:
|
||||
name: postgresql-common
|
||||
state: present
|
||||
|
||||
- name: Create dir createcluster.d
|
||||
file:
|
||||
path: /etc/postgresql-common/createcluster.d
|
||||
state: directory
|
||||
|
||||
- name: Disable main cluster creation by default
|
||||
copy:
|
||||
dest: /etc/postgresql-common/createcluster.d/create-main-cluster.conf
|
||||
content: |
|
||||
create_main_cluster = false
|
||||
|
||||
- name: Gather packages
|
||||
package_facts:
|
||||
manager: auto
|
||||
|
||||
- name: Set fact about PostgreSQL package
|
||||
set_fact:
|
||||
patroni_postgresql_installed_package: "{{ ansible_facts.packages[patroni_postgresql_package_name][0]['name'] }}"
|
||||
when: patroni_postgresql_package_name in ansible_facts.packages
|
||||
|
||||
- name: Print installed PostgreSQL version
|
||||
debug:
|
||||
msg: "{{ ansible_facts.packages[patroni_postgresql_package_name][0]['version'] }}"
|
||||
verbosity: 2
|
||||
when: patroni_postgresql_installed_package is defined
|
||||
|
||||
- name: Mask PostgreSQL before install
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ patroni_postgresql_unit_name }}"
|
||||
masked: yes
|
||||
when: patroni_postgresql_package_name not in ansible_facts.packages or ansible_facts.packages[patroni_postgresql_package_name][0]['version'] != (patroni_postgresql_version|string + "-" + patroni_postgresql_version_build|string)
|
||||
|
||||
- name: "Install {{ patroni_postgresql_package_name }}-{{ patroni_postgresql_version }}-{{ patroni_postgresql_version_build }}"
|
||||
apt:
|
||||
name: "{{ patroni_postgresql_package }}"
|
||||
update_cache: yes
|
||||
register: patroni_postgresql_setup
|
||||
when: patroni_postgresql_package_name not in ansible_facts.packages
|
||||
|
||||
- name: "Update {{ patroni_postgresql_package_name }}-{{ patroni_postgresql_version }}-{{ patroni_postgresql_version_build }}"
|
||||
apt:
|
||||
name: "{{ patroni_postgresql_package }}"
|
||||
update_cache: yes
|
||||
register: patroni_postgresql_update
|
||||
when:
|
||||
- patroni_postgresql_package_name in ansible_facts.packages
|
||||
- ansible_facts.packages[patroni_postgresql_package_name][0]['version'] != (patroni_postgresql_version|string + "-" + patroni_postgresql_version_build|string)
|
@ -1,45 +0,0 @@
|
||||
- name: Install Patroni {{ patroni_version }} with Python 3.6
|
||||
when: "patroni_use_python39 is not defined or not patroni_use_python39"
|
||||
block:
|
||||
- name: Add Patroni repository
|
||||
dnf:
|
||||
name: "{{ patroni_repo_package }}"
|
||||
state: present
|
||||
disable_gpg_check: yes
|
||||
|
||||
- name: "Install Patroni {{ patroni_version }} with Python 3.6"
|
||||
dnf:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
disable_gpg_check: yes
|
||||
update_cache: yes
|
||||
loop:
|
||||
- "{{ patroni_default_packages }}"
|
||||
register: patroni_setup
|
||||
|
||||
- name: Install Patroni {{ patroni_version }} with Python 3.9
|
||||
when:
|
||||
- patroni_use_python39 is defined
|
||||
- patroni_use_python39
|
||||
block:
|
||||
- name: Enable Python 3.9 module
|
||||
shell: dnf module enable -y python39
|
||||
register: enable_python39_module
|
||||
changed_when: "'Nothing to do' not in enable_python39_module.stdout"
|
||||
|
||||
- name: Install Python 3.9
|
||||
dnf:
|
||||
name: python39
|
||||
state: present
|
||||
|
||||
- name: Set python3.9 as python
|
||||
shell: alternatives --set python /usr/bin/python3.9
|
||||
register: set_python39_as_python
|
||||
changed_when: false
|
||||
failed_when: set_python39_as_python.stdout != ''
|
||||
|
||||
- name: "Install Patroni {{ patroni_version }} with Python 3.9"
|
||||
dnf:
|
||||
name: "{{ patroni_python39_packages }}"
|
||||
disablerepo: pgdg*
|
||||
state: latest
|
@ -1,44 +1,5 @@
|
||||
- name: Disable PostgreSQL module
|
||||
shell: dnf module disable -y postgresql
|
||||
register: disable_postgresql_module
|
||||
changed_when: "'Nothing to do' not in disable_postgresql_module.stdout"
|
||||
|
||||
- name: "Install EPEL"
|
||||
dnf:
|
||||
name: "epel-release"
|
||||
state: present
|
||||
|
||||
- name: Add PostgreSQL repository
|
||||
dnf:
|
||||
name: "{{ patroni_postgresql_repo_package }}"
|
||||
state: present
|
||||
disable_gpg_check: yes
|
||||
when: patroni_postgresql_install_repo
|
||||
|
||||
- name: "Install PostgreSQL {{ patroni_postgresql_version }}"
|
||||
dnf:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
disable_gpg_check: yes
|
||||
loop:
|
||||
- "{{ patroni_postgresql_packages }}"
|
||||
register: patroni_postgresql_setup
|
||||
|
||||
- name: Manage TLS/SSL certificates
|
||||
include_tasks: cacert.yaml
|
||||
when: patroni_ssl
|
||||
|
||||
- name: Add WAL-G to patroni_create_replica_methods
|
||||
set_fact:
|
||||
patroni_create_replica_methods: "{{ patroni_create_replica_methods + [ 'wal_g' ] }}"
|
||||
when: patroni_wal_g_install
|
||||
|
||||
- name: Include WAL-G role
|
||||
ansible.builtin.include_role:
|
||||
name: wal-g
|
||||
vars:
|
||||
wal_g_pg: yes
|
||||
when: patroni_wal_g_install
|
||||
- name: Include backup with WAL-G install
|
||||
include_tasks: wal_g_install.yaml
|
||||
|
||||
- name: Include Patroni {{ patroni_version }} install
|
||||
include_tasks: install.yaml
|
||||
include_tasks: patroni_install.yaml
|
||||
|
39
tasks/RedHat/patroni_install.yaml
Normal file
39
tasks/RedHat/patroni_install.yaml
Normal file
@ -0,0 +1,39 @@
|
||||
- name: Gather packages
|
||||
package_facts:
|
||||
manager: auto
|
||||
|
||||
- name: Set fact about Patroni package
|
||||
set_fact:
|
||||
patroni_installed_package: "{{ ansible_facts.packages[patroni_package_name][0]['name'] }}"
|
||||
when: patroni_package_name in ansible_facts.packages
|
||||
|
||||
- name: Print installed Patroni version
|
||||
debug:
|
||||
msg: "{{ ansible_facts.packages[patroni_package_name][0]['version'] }}"
|
||||
verbosity: 2
|
||||
when: patroni_installed_package is defined
|
||||
|
||||
- name: "Install {{ patroni_package_name }}-{{ patroni_version }}"
|
||||
dnf:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
disable_gpg_check: yes
|
||||
update_cache: yes
|
||||
loop:
|
||||
- "{{ patroni_default_packages }}"
|
||||
register: patroni_setup
|
||||
when: patroni_package_name not in ansible_facts.packages
|
||||
|
||||
- name: "Update {{ patroni_package_name }}-{{ patroni_version }}"
|
||||
dnf:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
disable_gpg_check: yes
|
||||
update_cache: yes
|
||||
loop:
|
||||
- "{{ patroni_default_packages }}"
|
||||
register: patroni_update
|
||||
notify: Restart Patroni
|
||||
when:
|
||||
- patroni_package_name in ansible_facts.packages
|
||||
- ansible_facts.packages[patroni_package_name][0]['version'] != patroni_version|string
|
10
tasks/RedHat/patroni_repos_and_deps.yaml
Normal file
10
tasks/RedHat/patroni_repos_and_deps.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
- name: "Install EPEL"
|
||||
dnf:
|
||||
name: "epel-release"
|
||||
state: present
|
||||
|
||||
- name: Add Patroni repository
|
||||
dnf:
|
||||
name: "{{ patroni_repo_package }}"
|
||||
state: present
|
||||
disable_gpg_check: yes
|
37
tasks/RedHat/postgresql_install.yaml
Normal file
37
tasks/RedHat/postgresql_install.yaml
Normal file
@ -0,0 +1,37 @@
|
||||
- name: Disable PostgreSQL module
|
||||
shell: dnf module disable -y postgresql
|
||||
register: disable_postgresql_module
|
||||
changed_when: "'Nothing to do' not in disable_postgresql_module.stdout"
|
||||
|
||||
- name: Gather packages
|
||||
package_facts:
|
||||
manager: auto
|
||||
|
||||
- name: Set fact about PostgreSQL package
|
||||
set_fact:
|
||||
patroni_postgresql_installed_package: "{{ ansible_facts.packages[patroni_postgresql_package_name][0]['name'] }}"
|
||||
when: patroni_postgresql_package_name in ansible_facts.packages
|
||||
|
||||
- name: Print installed PostgreSQL version
|
||||
debug:
|
||||
msg: "{{ ansible_facts.packages[patroni_postgresql_package_name][0]['version'] }}"
|
||||
verbosity: 2
|
||||
when: patroni_postgresql_installed_package is defined
|
||||
|
||||
- name: "Install {{ patroni_postgresql_package_name }}-{{ patroni_postgresql_version }}"
|
||||
dnf:
|
||||
name: "{{ item }}"
|
||||
loop:
|
||||
- "{{ patroni_postgresql_packages }}"
|
||||
register: patroni_postgresql_setup
|
||||
when: patroni_postgresql_package_name not in ansible_facts.packages
|
||||
|
||||
- name: "Update {{ patroni_postgresql_package_name }}-{{ patroni_postgresql_version }}"
|
||||
dnf:
|
||||
name: "{{ item }}"
|
||||
loop:
|
||||
- "{{ patroni_postgresql_packages }}"
|
||||
register: patroni_postgresql_update
|
||||
when:
|
||||
- patroni_postgresql_package_name in ansible_facts.packages
|
||||
- ansible_facts.packages[patroni_postgresql_package_name][0]['version'] != patroni_postgresql_version|string
|
@ -1,15 +0,0 @@
|
||||
- name: Add Patroni repository
|
||||
dnf:
|
||||
name: "{{ patroni_repo_package }}"
|
||||
state: present
|
||||
disable_gpg_check: yes
|
||||
|
||||
- name: "Install Patroni {{ patroni_version }} with Python 3.6"
|
||||
dnf:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
disable_gpg_check: yes
|
||||
update_cache: yes
|
||||
loop:
|
||||
- "{{ patroni_default_packages }}"
|
||||
register: patroni_setup
|
@ -1,21 +0,0 @@
|
||||
- name: Enable Python 3.9 module
|
||||
shell: dnf module enable -y python39
|
||||
register: enable_python39_module
|
||||
changed_when: "'Nothing to do' not in enable_python39_module.stdout"
|
||||
|
||||
- name: Install Python 3.9
|
||||
dnf:
|
||||
name: python39
|
||||
state: present
|
||||
|
||||
- name: Set python3.9 as python
|
||||
shell: alternatives --set python /usr/bin/python3.9
|
||||
register: set_python39_as_python
|
||||
changed_when: false
|
||||
failed_when: set_python39_as_python.stdout != ''
|
||||
|
||||
- name: "Install Patroni {{ patroni_version }} with Python 3.9"
|
||||
dnf:
|
||||
name: "{{ patroni_python39_packages }}"
|
||||
disablerepo: pgdg*
|
||||
state: latest
|
11
tasks/RedHat/wal_g_install.yaml
Normal file
11
tasks/RedHat/wal_g_install.yaml
Normal file
@ -0,0 +1,11 @@
|
||||
- name: Add WAL-G to patroni_create_replica_methods
|
||||
set_fact:
|
||||
patroni_create_replica_methods: "{{ patroni_create_replica_methods + [ 'wal_g' ] }}"
|
||||
when: patroni_wal_g_install
|
||||
|
||||
- name: Include WAL-G role
|
||||
ansible.builtin.include_role:
|
||||
name: wal-g
|
||||
vars:
|
||||
wal_g_pg: yes
|
||||
when: patroni_wal_g_install
|
@ -1,3 +1,17 @@
|
||||
- name: "Add host to {{ patroni_play_group }} group"
|
||||
add_host:
|
||||
groups: "{{ patroni_play_group }}"
|
||||
hostname: "{{ hostvars[item]['inventory_hostname'] }}"
|
||||
ansible_host: "{{ hostvars[item]['ansible_host'] | default(omit) }}"
|
||||
loop: "{{ ansible_play_hosts }}"
|
||||
when: groups[patroni_play_group] is not defined
|
||||
changed_when: false
|
||||
|
||||
- name: Install python3-cryptography as dependence
|
||||
package:
|
||||
name: python3-cryptography
|
||||
state: present
|
||||
|
||||
- name: Check if ssl dir exist
|
||||
file:
|
||||
name: "{{ patroni_ssl_path }}"
|
||||
@ -16,7 +30,7 @@
|
||||
when: patroni_cert is defined
|
||||
|
||||
- name: Generate OpenSSL key and cert for Patroni
|
||||
when: "inventory_hostname == groups.patroni|first"
|
||||
when: "inventory_hostname == groups[patroni_play_group]|first"
|
||||
block:
|
||||
- name: Generate an OpenSSL private CA key with the default values (4096 bits, RSA)
|
||||
community.crypto.openssl_privatekey:
|
||||
@ -61,30 +75,26 @@
|
||||
when: patroni_cert is not defined
|
||||
register: patroni_key_gen
|
||||
|
||||
- name: Generate subject_alt_ips
|
||||
- name: Generate Patroni subject_alt_ips from ansible_host
|
||||
set_fact:
|
||||
client_subject_alt_ips: "{{ groups.patroni | map('extract', hostvars, ['ansible_host']) | map('regex_replace', '^', 'IP:') | list }}"
|
||||
patroni_server_subject_alt_ips_from_ansible_host: "{{ groups[patroni_play_group] | default([]) | map('extract', hostvars, ['ansible_host']) | map('regex_replace', '^', 'IP:') | list }}"
|
||||
when: hostvars[inventory_hostname]['ansible_host'] is defined
|
||||
|
||||
- name: Print alt subjects ips
|
||||
debug:
|
||||
msg: "{{ client_subject_alt_ips }}"
|
||||
verbosity: 2
|
||||
|
||||
- name: Generate subject_alt_names
|
||||
- name: Generate Patroni subject_alt_ips from default ipv4 address
|
||||
set_fact:
|
||||
client_subject_alt_names: "{{ groups.patroni | map('extract', hostvars, ['inventory_hostname']) | map('regex_replace', '^', 'DNS:') | list }}"
|
||||
patroni_server_subject_alt_ips: "{{ groups[patroni_play_group] | default([]) | map('extract', hostvars, ['ansible_default_ipv4', 'address']) | map('regex_replace', '^', 'IP:') | list }}"
|
||||
when: hostvars[inventory_hostname]['ansible_default_ipv4']['address'] is defined
|
||||
|
||||
- name: Print alt subjects names
|
||||
debug:
|
||||
msg: "{{ client_subject_alt_names }}"
|
||||
verbosity: 2
|
||||
- name: Generate Patroni subject_alt_names
|
||||
set_fact:
|
||||
patroni_server_subject_alt_names: "{{ groups[patroni_play_group] | default([]) | map('extract', hostvars, ['inventory_hostname']) | map('regex_replace', '^', 'DNS:') | list }}"
|
||||
|
||||
- name: Generate an OpenSSL Certificate Signing Request for client
|
||||
community.crypto.openssl_csr:
|
||||
path: "{{ patroni_ssl_path }}/{{ patroni_self_signed_cert_name }}.csr"
|
||||
privatekey_path: "{{ patroni_ssl_path }}/{{ patroni_self_signed_cert_name }}.key"
|
||||
common_name: "{{ patroni_self_signed_cert_name }}"
|
||||
subject_alt_name: "{{ (( groups.patroni | map('extract', hostvars, ['ansible_host']) | map('regex_replace', '^', 'IP:') | list | default([])) + (groups.patroni | map('extract', hostvars, ['inventory_hostname']) | map('regex_replace', '^', 'DNS:') | list | default([]))) }}"
|
||||
subject_alt_name: "{{ patroni_server_subject_alt_ips | default([]) + patroni_server_subject_alt_names | default([]) + patroni_agent_subject_alt_ips | default([]) + patroni_agent_subject_alt_names | default([]) + patroni_server_subject_alt_ips_from_ansible_host | default([]) + patroni_agent_subject_alt_ips_from_ansible_host | default([]) }}"
|
||||
owner: postgres
|
||||
group: postgres
|
||||
register: patroni_csr
|
||||
@ -151,13 +161,13 @@
|
||||
- name: Put Patroni CA OpenSSL cert to PKI
|
||||
copy:
|
||||
content: "{{ patroni_ca_cert }}"
|
||||
dest: "/etc/pki/ca-trust/source/anchors/CA-{{ patroni_self_signed_cert_name }}.crt"
|
||||
register: ca_trust_anchors
|
||||
dest: "{{ patroni_ssl_ca_trust_dir }}/CA-{{ patroni_self_signed_cert_name }}.crt"
|
||||
register: ca_trust
|
||||
notify: Restart Patroni
|
||||
|
||||
- name: Update CA trust
|
||||
shell: update-ca-trust extract
|
||||
when: ca_trust_anchors.changed
|
||||
shell: "{{ patroni_ssl_update_ca_command }}"
|
||||
when: ca_trust.changed
|
||||
|
||||
- name: Put Patroni OpenSSL key
|
||||
copy:
|
@ -30,7 +30,7 @@
|
||||
- name: Propagate Patroni config
|
||||
copy:
|
||||
content: "{{ patroni_config_combined | to_nice_yaml }}"
|
||||
dest: "/etc/patroni/patroni.yml"
|
||||
dest: "/etc/patroni/{{ patroni_config_name }}"
|
||||
owner: "postgres"
|
||||
group: "postgres"
|
||||
mode: 0644
|
||||
|
42
tasks/locale.yaml
Normal file
42
tasks/locale.yaml
Normal file
@ -0,0 +1,42 @@
|
||||
- name: Install glibc-all-langpacks for RedHat
|
||||
dnf:
|
||||
name: glibc-all-langpacks
|
||||
state: present
|
||||
when: ansible_facts['os_family'] == 'RedHat'
|
||||
|
||||
- name: Check if locale exists
|
||||
shell: "locale -a | grep -i {{ patroni_postgresql_system_locale | regex_replace('-', '') | quote }}"
|
||||
register: found_locale
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
- name: Create locale
|
||||
command: "localedef -i {{ patroni_postgresql_system_locale | regex_replace('(.*)\\..*', '\\1') | quote }} -f {{ patroni_postgresql_system_locale | regex_replace('.*\\.(.*)', '\\1') | quote }} {{ patroni_postgresql_system_locale | quote }}"
|
||||
when: not ansible_check_mode and found_locale.rc != 0
|
||||
|
||||
- name: Check if language exists
|
||||
shell: "locale -a | grep -i {{ patroni_postgresql_system_language | regex_replace('-', '') | quote }}"
|
||||
register: found_language
|
||||
changed_when: false
|
||||
failed_when: false
|
||||
|
||||
- name: Create language
|
||||
command: "localedef -i {{ patroni_postgresql_system_language | regex_replace('(.*)\\..*', '\\1') | quote }} -f {{ patroni_postgresql_system_language | regex_replace('.*\\.(.*)', '\\1') | quote }} {{ patroni_postgresql_system_language | quote }}"
|
||||
when: not ansible_check_mode and found_language.rc != 0
|
||||
|
||||
- name: Get current locale and language configuration
|
||||
command: localectl status
|
||||
register: locale_status
|
||||
changed_when: false
|
||||
|
||||
- name: Parse 'LANG' from current locale and language configuration
|
||||
set_fact:
|
||||
locale_lang: "{{ locale_status.stdout | regex_search('LANG=([^\n]+)', '\\1') | first }}"
|
||||
|
||||
- name: Parse 'LANGUAGE' from current locale and language configuration
|
||||
set_fact:
|
||||
locale_language: "{{ locale_status.stdout | regex_search('LANGUAGE=([^\n]+)', '\\1') | default([locale_lang], true) | first }}"
|
||||
|
||||
- name: Configure locale to '{{ patroni_postgresql_system_locale }}' and language to '{{ patroni_postgresql_system_language }}'
|
||||
command: localectl set-locale LANG={{ patroni_postgresql_system_locale }} LANGUAGE={{ patroni_postgresql_system_language }}
|
||||
changed_when: locale_lang != patroni_postgresql_system_locale or locale_language != patroni_postgresql_system_language
|
@ -6,33 +6,39 @@
|
||||
vars:
|
||||
params:
|
||||
files:
|
||||
- "{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_major_version'] }}.yaml"
|
||||
- "{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_version'] }}.yaml"
|
||||
- "{{ ansible_facts['os_family'] }}-{{ ansible_facts['distribution_major_version'] }}.yaml"
|
||||
- "{{ ansible_facts['os_family'] }}-{{ ansible_facts['distribution_version'] }}.yaml"
|
||||
- "{{ ansible_facts['distribution'] }}.yaml"
|
||||
- "{{ ansible_facts['os_family'] }}.yaml"
|
||||
paths:
|
||||
- "vars"
|
||||
tags: always, patroni_vars
|
||||
tags: patroni_vars
|
||||
|
||||
- name: Load host variables to override role vars
|
||||
include_vars:
|
||||
dir: "{{ inventory_dir }}/host_vars"
|
||||
ignore_unknown_extensions: True
|
||||
extensions:
|
||||
- ''
|
||||
- "yaml"
|
||||
- "yml"
|
||||
tags: patroni_override_role_vars
|
||||
- name: Set facts about needed vars
|
||||
set_fact:
|
||||
patroni_postgresql_home_dir: "{{ patroni_postgresql_home_dir }}"
|
||||
patroni_postgresql_data_dir: "{{ patroni_postgresql_data_dir }}"
|
||||
|
||||
- name: Load group variables to override role vars
|
||||
include_vars:
|
||||
dir: "{{ inventory_dir }}/group_vars"
|
||||
ignore_unknown_extensions: True
|
||||
extensions:
|
||||
- ''
|
||||
- "yaml"
|
||||
- "yml"
|
||||
tags: patroni_override_role_vars
|
||||
- name: "Set locale for PostgreSQL"
|
||||
include_tasks: locale.yaml
|
||||
tags: patroni_locale
|
||||
|
||||
- name: Task name
|
||||
- name: "Install Patroni repository and deps for {{ ansible_facts['os_family'] }}"
|
||||
include_tasks: "{{ ansible_facts['os_family'] }}/patroni_repos_and_deps.yaml"
|
||||
when: patroni_install_official_repo
|
||||
tags: patroni_repos_and_deps
|
||||
|
||||
- name: "Install PostgreSQL for {{ ansible_facts['os_family'] }}"
|
||||
include_tasks: "{{ ansible_facts['os_family'] }}/postgresql_install.yaml"
|
||||
tags: patroni_install
|
||||
|
||||
- name: "Manage TLS/SSL certificates"
|
||||
include_tasks: cacert.yaml
|
||||
when: patroni_ssl
|
||||
|
||||
- name: "Check if patroni.yaml exist"
|
||||
stat:
|
||||
path: /etc/patroni/patroni.yaml
|
||||
register: patroni_config
|
||||
@ -59,7 +65,6 @@
|
||||
- name: "Dynamic Patroni configuration"
|
||||
include_tasks: dynamic_config.yaml
|
||||
when:
|
||||
#- patroni_config.stat.exists
|
||||
- patroni_postgresql_dynamic_parameters
|
||||
tags: patroni_dynamic_configure
|
||||
|
||||
|
Reference in New Issue
Block a user