galaxyproject.postgresql

PostgreSQL

一个用于安装和管理 [PostgreSQL][postgresql] 服务器的 [Ansible][ansible] 角色。该角色适用于 Debian 和 RedHat 系统,并提供用于 [PostgreSQL 持续归档和时间点恢复][postgresql_pitr] 的备份脚本。它不创建或管理 PostgreSQL 用户、角色、组、数据库等。有关这些的管理,请查看 [galaxyproject.postgresql_objects][postgresql_objects]。

在 RedHat 系统上,将安装 [PostgreSQL 全球开发组 (PGDG) 包][pgdg_yum]。在 Debian 系统上,您可以选择使用发行版的 APT 包或 [PGDG 包][pgdg_apt]。

需要重启才能应用的更改,必须手动重启 PostgreSQL。 此角色会重新加载服务器,以更新仅需重新加载的配置更改,因为重新加载是一种非侵入式操作,但需要完全重启的选项不会导致服务器重启。

要求

此角色要求 Ansible 2.4 及以上版本。

角色变量

所有变量都是可选的

  • postgresql_user_name:将用于 PostgreSQL 的系统用户名(默认值:postgres)。

  • postgresql_version:要安装的 PostgreSQL 版本。在 Debian 系统上,默认版本是 postgresql 元包所指向的版本。在 RedHat 系统上,默认版本为 10

  • postgresql_flavor:在 Debian 系统上,此变量指定您希望使用 pgdg 的 PostgreSQL 包还是发行版的 apt 仓库。可能的值:apt, pgdg(默认值:apt)。

  • postgresql_conf:一个包含 postgresql.conf 选项(键)及其值的哈希(字典)列表。这些选项不会直接添加到 postgresql.conf 中,而是为配置目录添加一个 conf.d 子目录,并在 postgresql.conf 中包含该目录。然后,在 conf.d/25ansible_postgresql.conf 中设置 postgresql_conf 中的选项。出于兼容性原因,这也可以是一个哈希,但列表语法更受欢迎,因为它保留顺序。

    由于 YAML 解析,在定义 postgresql_conf 中的值时,必须确保它们被正确写入配置文件。例如:

    postgresql_conf:
      - max_connections: 250
      - archive_mode: "off"
      - work_mem: "'8MB'"
    

    25ansible_postgresql.conf 中变为:

    max_connections = 250
    archive_mode = off
    work_mem: '8MB'
    
  • postgresql_pg_hba_conf:要添加到 pg_hba.conf 的行列表。

  • postgresql_pg_hba_local_postgres_user:如果设置为 false,则将从 Debian 系统中预配置的 pg_hba.conf 移除 postgres 用户的条目。除非您确切知道自己在做什么,否则您可能不想这样做。

  • postgresql_pg_hba_local_socket:如果设置为 false,这将移除 PostgreSQL 包预配置的 pg_hba.conf 中的 local 条目。

  • postgresql_pg_hba_local_ipv4:如果设置为 false,这将移除 PostgreSQL 包预配置的 pg_hba.conf 中的 host ... 127.0.0.1/32 条目。

  • postgresql_pg_hba_local_ipv6:如果设置为 false,这将移除 PostgreSQL 包预配置的 pg_hba.conf 中的 host ... ::1/128 条目。

  • postgresql_pgdata:仅在您已更改 $PGDATA 目录时设置此项。请注意,这不会配置 PostgreSQL 实际使用不同的目录,您需要自己进行配置,它仅允许角色正确定位目录。

  • postgresql_conf_dir:与 postgresql_pgdata 类似,但用于配置目录。

  • postgresql_install_psycopg2:尝试为 Ansible 在远程使用的 Python 解释器安装正确的 psycopg2 包。这允许使用依赖于 psycopg2 的 postgresql_* Ansible 模块(可能通过 [galaxyproject.postgresql_objects][postgresql_objects])。默认为 true

备份

此角色可以部署和调度配置及脚本,以维护 PostgreSQL [PITR][postgresql_pitr] 备份。

在配置的时间间隔内将进行完整备份,而在完整备份之间的预写日志 (WAL) 段将在 PostgreSQL 服务器指示时被存档到 {{ postgresql_backup_dir }}/wal_archive/。一旦引用它们的最旧备份被删除,可以移除此目录中的 WAL 段。备份脚本将在 postgresql_backup_dir 本地挂载时为您自动处理此操作。

postgresql_backup_dir 是远程 rsync 路径(包含“:”)时,备份脚本仍会维护备份(包括删除旧的完整备份),但无法自动修剪 wal_archive/ 目录。如果您能够在备份服务器上安装 PostgreSQL 客户端包中的标准 pg_archivecleanup 工具,可以在备份服务器上直接运行此角色的备份脚本,并使用 --clean-archive 选项。

  • postgresql_backup_dir:如果设置,则启用 PITR 备份。将此设置为数据库备份的目录(可以是任何 rsync 支持的格式,例如 user@host:/path)。最近的备份将位于名为 current 的子目录中。

  • postgresql_backup_local_dir:在 PostgreSQL 服务器上放置备份脚本的文件系统路径。

  • postgresql_backup_[hour|minute]:控制执行完整备份的 cron 作业的时间。默认值为凌晨 1:00。

  • postgresql_backup_[day|month|weekday]:执行完整备份的额外 cron 控制(默认值:*)。

  • postgresql_backup_post_command:在成功完成调度备份后要运行的任意命令。

有关备份的其他选项,请参阅 defaults 文件

依赖关系

备份功能需要 Python 2.7 或 3.5 及以上版本、psycopg2 和 rsync。请注意,如果在企业 Linux 上安装 PGDG 版本的 PostgreSQL,相关的 psycopg2 包可以从 PGDG yum 仓库获得。

示例剧本

标准安装:默认的 postgresql.confpg_hba.conf 和操作系统的默认版本:

---

- hosts: dbservers
  roles:
    - galaxyproject.postgresql

在 Debian 系统上使用 pgdg 包:

---

- hosts: dbservers
  vars:
    postgresql_flavor: pgdg
  roles:
    - galaxyproject.postgresql

使用 PostgreSQL 9.5 包并设置一些 postgresql.conf 选项和 pg_hba.conf 条目:

---

- hosts: dbservers
  vars:
    postgresql_version: 9.5
    postgresql_conf:
      - listen_addresses: "''"    # 禁用网络监听(仅在 unix 套接字上监听)
      - max_connections: 50        # 减少连接限制
    postgresql_pg_hba_conf:
      - host all all 10.0.0.0/8 md5
  roles:
    - galaxyproject.postgresql

将备份启用到 /archive:

- hosts: all
  vars:
    postgresql_backup_dir: /archive
  roles:
    - galaxyproject.postgresql

将备份启用到远程服务器上的 /archive:

- hosts: dbservers
  vars:
    postgresql_backup_dir: backup.example.org:/archive
  roles:
    - galaxyproject.postgresql

- hosts: backupservers
  tasks:
    - name: 安装 PostgreSQL 脚本
      ansible.builtin.apt:
        name: postgresql-common
    - name: 复制备份脚本
      ansible.builtin.copy:
        src: roles/galaxyproject.postgresql/files/backup.py
        dest: /usr/local/bin/pgbackup.py
        mode: "0755"
    - name: 安排 WAL 修剪
      ansible.builtin.cron:
        name: 修剪 PostgreSQL 存档 WAL
        hour: 22
        minute: 0
        job: /usr/local/bin/pgbackup.py --clean-archive /archive

许可证

学术自由许可证 ("AFL") v. 3.0

作者信息

Galaxy Community贡献者

关于项目

Install and manage a PostgreSQL (http://www.postgresql.org/) server.

安装
ansible-galaxy install galaxyproject.postgresql
许可证
Unknown
下载
80.5k
拥有者
Galaxy is an open, web-based platform for data-intensive research.