30.3. postgresql 角色变量

您可以使用 postgresql RHEL 系统角色的以下变量来自定义 PostgreSQL 服务器行为。

postgresql_verison

您可以将 PostgreSQL 服务器的版本设置为 10、12 或 13。例如:

postgresql_version: "13"
postgresql_password

可选,您可以为 postgres 数据库超级用户设置密码。默认情况下,没有设置密码,数据库可以通过 UNIX 套接字从 postgres 系统帐户访问。建议使用 Ansible Vault 加密密码。例如:

postgresql_password: !vault |
      	$ANSIBLE_VAULT;1.2;AES256;dev
      	....
postgresql_pg_hba_conf

postgresql_pg_hba_conf 变量的内容替换了 /var/lib/pgsql/data/pg_hba.conf 文件中的默认上游配置。例如:

postgresql_pg_hba_conf:
  - type: local
    database: all
    user: all
    auth_method: peer
  - type: host
    database: all
    user: all
    address: '127.0.0.1/32'
    auth_method: ident
  - type: host
    database: all
    user: all
    address: '::1/128'
    auth_method: ident
postgresql_server_conf

postgresql_server_conf 变量的内容被添加到 /var/lib/pgsql/data/postgresql.conf 文件的末尾。因此,默认设置被覆盖。例如:

postgresql_server_conf:
  ssl: on
  shared_buffers: 128MB
  huge_pages: try
postgresql_ssl_enable

要设置 SSL/TLS 连接,请将 postgresql_ssl_enable 变量设置为 true

postgresql_ssl_enable: true

并使用以下方法之一提供服务器证书和私钥:

  • 如果要使用现有的证书和私钥,请使用 postgresql_cert_name 变量。
  • 使用 postgresql_certificates 变量生成一个新证书。
postgresql_cert_name

如果要使用自己的证书和私钥,请使用 postgresql_cert_name 变量来指定证书名称。您必须将证书和密钥文件保存在同一目录下,并使用带有 .crt.key 后缀的相同的名称。

例如,如果您的证书文件位于 /etc/certs/server.crt 中,且您的私钥位于 /etc/certs/server.key 中,请将 postgresql_cert_name 值设置为:

postgresql_cert_name: /etc/certs/server
postgresql_certificates

postgresql_certificates 变量需要 dict列表 ,其格式与 redhat.rhel_system_roles.certificate 角色使用的格式相同。如果您希望 certificate 角色为 PostgreSQL 角色配置的 PostgreSQL 服务器生成证书,请指定 postgresql_certificates 变量。在以下示例中,自签名的证书 postgresql_cert.crt/etc/pki/tls/certs/ 目录中产生。默认情况下,不会自动生成证书([])。

postgresql_certificates:
  - name: postgresql_cert
    dns: ['localhost', 'www.example.com']
    ca: self-sign
postgresql_input_file

要运行一个 SQL 脚本,请使用 postgresql_input_file 变量定义到 SQL 文件的路径:

postgresql_input_file: "/tmp/mypath/file.sql"
postgresql_server_tuning

默认情况下,PostgreSQL 系统角色根据系统资源启用服务器设置优化。要禁用调整,请将 postgresql_server_tuning 变量设为 false

postgresql_server_tuning: false

其他资源

  • 使用 rhel-system-roles 软件包安装的文档:/usr/share/doc/rhel-system-roles/postgresql/ 目录中的 README.mdREADME.html 文件