41 lines
1.5 KiB
YAML
41 lines
1.5 KiB
YAML
---
|
|
- name: 配置官方软件源
|
|
ansible.builtin.import_tasks: repository.yml
|
|
- name: 安装集群管理基础包(不安装默认主版本元包)
|
|
ansible.builtin.apt:
|
|
name: postgresql-common
|
|
state: present
|
|
- name: 查询已安装包以避免重复制造临时配置变更
|
|
ansible.builtin.package_facts:
|
|
manager: apt
|
|
- name: 临时禁止包安装自动建立默认 main 实例
|
|
when: >-
|
|
['postgresql-18', 'postgresql-client-18', 'pgbackrest']
|
|
| difference(ansible_facts.packages.keys() | list) | length > 0
|
|
block:
|
|
- name: 确保包配置片段目录存在
|
|
ansible.builtin.file:
|
|
path: /etc/postgresql-common/createcluster.d
|
|
state: directory
|
|
mode: '0755'
|
|
- name: 禁止本次 apt postinst 自动初始化
|
|
ansible.builtin.copy:
|
|
dest: /etc/postgresql-common/createcluster.d/90-homelab-no-auto.conf
|
|
content: "create_main_cluster = false\n"
|
|
mode: '0644'
|
|
- name: 安装明确的 PG 主版本与备份工具
|
|
ansible.builtin.apt:
|
|
name: ['postgresql-18', 'postgresql-client-18', pgbackrest]
|
|
state: present
|
|
install_recommends: false
|
|
always:
|
|
- name: 撤回临时包安装选项
|
|
ansible.builtin.file:
|
|
path: /etc/postgresql-common/createcluster.d/90-homelab-no-auto.conf
|
|
state: absent
|
|
- name: 在独立 venv 安装固定 Patroni 版本
|
|
ansible.builtin.pip:
|
|
name: 'patroni[etcd3,psycopg3]=={{ pg_patroni_version }}'
|
|
virtualenv: /opt/homelab-patroni
|
|
virtualenv_command: python3 -m venv
|