ANXS.postgresql

ANXS - PostgreSQL 构建状态


需要帮助!如果您愿意并能够帮助维护这个 Ansible 角色,请在 GitHub 上提交一个问题。很多人似乎在使用这个角色,我们(显而易见)需要帮助! 💖


此 Ansible 角色用于安装和配置 PostgreSQL、扩展、数据库和用户。

安装

此程序已经在 Ansible 2.4.0 及更高版本上进行了测试。

安装方法:

ansible-galaxy install anxs.postgresql

示例剧本

如何包含此角色的示例:

---
- hosts: postgresql-server
  roles:
    - role: ANXS.postgresql
      become: yes

如何将此角色作为任务包含的示例:

---
- hosts: postgresql-server
  tasks:
    - block:  # 解决方法,见 https://stackoverflow.com/a/56558842
        - name: PSQL 安装和配置
          include_role:
            name: ANXS.postgresql
          vars:
            postgresql_users:
              - name: abc
                password: abc
      become: true

依赖项

  • ANXS.monit (Galaxy/GH) 如果您需要 monit 保护(在这种情况下,您应该设置 monit_protection: true

兼容性矩阵

发行版 / PostgreSQL 11 12 13 14 15 16
Debian 11.x :no_entry: :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:
Rockylinux 8.x :no_entry: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Rockylinux 9.x :no_entry: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Ubuntu 20.04.x :no_entry: :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: - 已测试,运行良好
  • :warning: - 不适用于生产环境
  • :grey_question: - 未来将会正常工作(如果可以,请帮助)
  • :interrobang: - 可能有效,未测试
  • :no_entry: - 已达到生命周期终止(EOL)

变量

# 基本设置
postgresql_version: 16
postgresql_encoding: "UTF-8"
postgresql_locale: "en_US.UTF-8"
postgresql_ctype: "en_US.UTF-8"

postgresql_admin_user: "postgres"
postgresql_default_auth_method: "peer"

postgresql_cluster_name: main
postgresql_cluster_reset: false

# 要创建的数据库列表(可选)
# 注意:为了更灵活地使用扩展,请使用 postgresql_database_extensions 设置。
postgresql_databases:
  - name: foobar
    owner: baz          # 可选;指定数据库的所有者
    hstore: yes         # 标记在该数据库上安装 hstore 扩展(yes/no)
    uuid_ossp: yes      # 标记在该数据库上安装 uuid-ossp 扩展(yes/no)
    citext: yes         # 标记在该数据库上安装 citext 扩展(yes/no)
    encoding: "UTF-8"   # 覆盖每个数据库的全局 {{ postgresql_encoding }} 变量
    state: "present"    # 可选;'present'、'absent'、'dump'、'restore'之一
    lc_collate: "en_GB.UTF-8"   # 覆盖每个数据库的全局 {{ postgresql_locale }} 变量
    lc_ctype: "en_GB.UTF-8"     # 覆盖每个数据库的全局 {{ postgresql_ctype }} 变量

# 要创建的数据库扩展列表(可选)
postgresql_database_extensions:
  - db: foobar
    extensions:
      - hstore
      - citext

# 要创建的用户列表(可选)
postgresql_users:
  - name: baz
    pass: pass
    encrypted: yes  # 如果密码应该被加密,postgresql >= 10 只接受加密密码
    state: "present"    # 可选;'present'、'absent'之一

# 要创建的模式列表(可选)
postgresql_database_schemas:
  - database: foobar           # 数据库名称
    schema: acme               # 模式名称
    state: present

  - database: foobar           # 数据库名称
    schema: acme_baz           # 模式名称
    owner: baz                 # 所有者名称
    state: present

# 要应用的用户权限列表(可选)
postgresql_user_privileges:
  - name: baz                   # 用户名称
    db: foobar                  # 数据库
    priv: "ALL"                 # 权限字符串格式:示例:INSERT,UPDATE/table:SELECT/anothertable:ALL
    role_attr_flags: "CREATEDB" # 角色属性标志

还有很多设置可以调整,您可以在 defaults/main.yml 中找到。

测试 - Molecule

该项目附带了一个分子配置。请参见 ./molecule/README.md

示例:

molecule test

测试 - Vagrant

该项目附带了一个 Vagrantfile,这是测试角色更改的一种快速简便的方法,通过 vagrant up 启动它。

有关设置 Vagrant 的信息,请参见 vagrant 文档

虚拟机启动后,您可以使用 vagrant provisionansible-playbook tests/playbook.yml -i vagrant-inventory 重新配置它。

如果您想尝试测试剧本,请查看 tests/playbook.yml,并更改 tests/vars.yml 中的变量。

如果您正在贡献,请首先在 Vagrant 环境中测试您的更改(使用目标发行版),如果可能,请确保您的更改覆盖 .travis.yml 中的测试。

许可证

根据 MIT 许可证授权。有关详细信息,请参见 LICENSE 文件。

感谢

创建者:

维护者:

主要贡献者:

反馈、错误报告、请求…

欢迎您提出 问题!

关于项目

Install and configure PostgreSQL, dependencies, extensions, databases and users.

安装
ansible-galaxy install ANXS.postgresql
许可证
mit
下载
525.1k
拥有者
DevOPS/System and network engineer, cyber-security lover. Blockchain enthusiast!