community.postgresql.postgresql_ext 模块 – 从数据库添加或删除 PostgreSQL 扩展

注意

此模块是 community.postgresql 集合(版本 3.9.0)的一部分。

如果您使用的是 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.postgresql。您需要其他要求才能使用此模块,请参阅 要求 以了解详细信息。

要在剧本中使用它,请指定:community.postgresql.postgresql_ext

概要

  • 从数据库添加或删除 PostgreSQL 扩展。

要求

执行此模块的主机需要满足以下要求。

  • psycopg2 >= 2.5.1

参数

参数

注释

ca_cert

别名:ssl_rootcert

字符串

指定包含 SSL 证书颁发机构 (CA) 证书的文件名。

如果该文件存在,则会验证服务器的证书是否由这些机构之一签名。

cascade

布尔值

自动安装/删除此扩展所依赖的任何尚未安装/删除的扩展(PostgreSQL 9.6 及更高版本支持)。

选择

  • false ←(默认)

  • true

comment

字符串

在 community.postgresql 3.3.0 中添加

在扩展上设置注释。

要重置注释,请传递一个空字符串。

connect_params

字典

在 community.postgresql 2.3.0 中添加

要传递给 libpg 的任何其他参数。

这些参数优先。

默认值: {}

db

别名:login_db

字符串 / 必需

要向其添加或从中删除扩展的数据库的名称。

login_host

别名:host

字符串

运行数据库的主机。

如果在使用 localhost 时遇到连接问题,请尝试使用 127.0.0.1 代替。

默认值: ""

login_password

字符串

此模块应使用以建立其 PostgreSQL 会话的密码。

默认值: ""

login_unix_socket

别名:unix_socket

字符串

用于本地连接的 Unix 域套接字的路径。

默认值: ""

login_user

别名:login

字符串

此模块应使用以建立其 PostgreSQL 会话的用户名。

默认值: "postgres"

name

别名:ext

字符串 / 必需

要添加或删除的扩展的名称。

port

别名:login_port

整数

要连接的数据库端口。

默认值: 5432

schema

字符串

要将扩展添加到其中的模式的名称。

session_role

字符串

连接后切换到 session_role。

指定的 session_role 必须是当前 login_user 所属的角色。

SQL 命令的权限检查就像 session_role 是最初登录的角色一样执行。

ssl_cert

路径

在 community.postgresql 2.4.0 中添加

指定客户端 SSL 证书的文件名。

ssl_key

路径

在 community.postgresql 2.4.0 中添加

指定用于客户端证书的密钥的位置。

ssl_mode

字符串

确定是否以及以何种优先级与服务器协商安全的 SSL TCP/IP 连接。

有关模式的详细信息,请参阅 https://postgresql.ac.cn/docs/current/static/libpq-ssl.html

prefer 的默认值与 libpq 默认值匹配。

选择

  • "allow"

  • "disable"

  • "prefer" ←(默认)

  • "require"

  • "verify-ca"

  • "verify-full"

state

字符串

数据库扩展状态。

选择

  • "absent"

  • "present" ←(默认)

trust_input

布尔值

在 community.postgresql 0.2.0 中添加

如果为 false,则检查参数 extschemaversionsession_role 的值是否可能存在危险。

仅当通过这些参数可能发生 SQL 注入时,使用 false 才有意义。

选择

  • false

  • true ← (默认)

version

字符串

要添加或更新到的扩展版本。仅当 state=present 时有效。

如果未指定且扩展未安装在数据库中,则将创建可用的最新版本。

如果已安装扩展,则如果存在有效的更新路径,则将更新到给定版本。

仅当扩展提供降级路径时才支持降级,否则必须删除该扩展,并使较低版本的扩展可用。

设置 version=latest 以将扩展更新到可用的最新版本。

属性

属性

支持

描述

check_mode

支持: 完全

可以在 check_mode 下运行,并在不修改目标的情况下返回更改状态预测。

注意

注意

  • 无法安装不兼容的版本,例如 PostGIS 的 ``unpackaged``。

  • 默认身份验证假定您正在以 postgres 帐户登录或 sudo 到该帐户。

  • 为了避免 “Peer authentication failed for user postgres” 错误,请使用 postgres 用户作为 become_user

  • 此模块使用 psycopg,这是一个 Python PostgreSQL 数据库适配器。在使用此模块之前,您必须确保主机上已安装 psycopg2 >= 2.5.1psycopg3 >= 3.1.8

  • 如果远程主机是 PostgreSQL 服务器(默认情况),则还必须在远程主机上安装 PostgreSQL。

  • 对于基于 Ubuntu 的系统,在使用此模块之前,请在远程主机上安装 postgresqllibpq-devpython3-psycopg2 包。

另请参阅

另请参阅

PostgreSQL 扩展

有关 PostgreSQL 扩展的常规信息。

CREATE EXTENSION 参考

CREATE EXTENSION 命令文档的完整参考。

ALTER EXTENSION 参考

ALTER EXTENSION 命令文档的完整参考。

DROP EXTENSION 参考

DROP EXTENSION 命令文档的完整参考。

示例

- name: Adds postgis extension to the database acme in the schema foo
  community.postgresql.postgresql_ext:
    name: postgis
    db: acme
    schema: foo
    comment: Test extension

- name: Removes postgis extension to the database acme
  community.postgresql.postgresql_ext:
    name: postgis
    db: acme
    state: absent

- name: Adds earthdistance extension to the database template1 cascade
  community.postgresql.postgresql_ext:
    name: earthdistance
    db: template1
    cascade: true

# In the example below, if earthdistance extension is installed,
# it will be removed too because it depends on cube:
- name: Removes cube extension from the database acme cascade
  community.postgresql.postgresql_ext:
    name: cube
    db: acme
    cascade: true
    state: absent

- name: Create extension foo of version 1.2 or update it to that version if it's already created and a valid update path exists
  community.postgresql.postgresql_ext:
    db: acme
    name: foo
    version: 1.2

- name: Create the latest available version of extension foo. If already installed, update it to the latest version
  community.postgresql.postgresql_ext:
    db: acme
    name: foo
    version: latest

返回值

通用返回值记录在此处,以下是此模块特有的字段

描述

prev_version

字符串

在 community.postgresql 3.1.0 中添加

先前安装的扩展版本,如果未安装扩展,则为空字符串。

返回: 成功

示例: "1.0"

queries

列表 / elements=字符串

已执行查询的列表。

返回: 成功

示例: ["DROP EXTENSION \"acme\""]

version

字符串

在 community.postgresql 3.1.0 中添加

当前安装的扩展版本,如果未安装扩展,则为空字符串。

返回: 成功

示例: "2.0"

作者

  • Daniel Schep (@dschep)

  • Thomas O’Donnell (@andytom)

  • Sandro Santilli (@strk)

  • Andrew Klychkov (@Andersson007)

  • Keith Fiske (@keithf4)

  • Daniele Giudice (@RealGreenDragon)