community.postgresql.postgresql_tablespace 模块 – 从远程主机添加或删除 PostgreSQL 表空间

注意

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

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

要安装它,请使用:ansible-galaxy collection install community.postgresql。您需要进一步的要求才能使用此模块,有关详细信息,请参见要求

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

概要

  • 从远程主机添加或删除 PostgreSQL 表空间。

要求

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

  • psycopg2 >= 2.5.1

参数

参数

注释

ca_cert

别名: ssl_rootcert

字符串

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

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

注释

字符串

在 community.postgresql 3.3.0 中添加

在表空间上设置注释。

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

connect_params

字典

在 community.postgresql 2.3.0 中添加

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

这些参数具有优先权。

默认值: {}

db

别名: login_db

字符串

要连接并运行查询的数据库的名称。

location

别名: path

路径

文件系统中表空间目录的路径。

确保该位置存在并且具有正确的权限。

login_host

别名: host

字符串

运行数据库的主机。

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

默认值: ""

login_password

字符串

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

默认值: ""

login_unix_socket

别名: unix_socket

字符串

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

默认值: ""

login_user

别名: login

字符串

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

默认值: "postgres"

owner

字符串

要设置为表空间所有者的角色的名称。

如果未指定此选项,则表空间所有者是创建表空间的 角色。

port

别名: login_port

整数

要连接的数据库端口。

默认值: 5432

rename_to

字符串

表空间的新名称。

新名称不能以 pg_ 开头,因为此类名称保留用于系统表空间。

session_role

字符串

连接后切换到 session_role。指定的 session_role 必须是当前 login_user 是其成员的角色。

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

set

字典

要设置的表空间选项的字典。PostgreSQL 9.0 起受支持。

有关更多信息,请参见https://postgresql.ac.cn/docs/current/sql-createtablespace.html

当将 reset 作为选项的值传递时,如果之前设置了该选项,则会将其删除。

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=present 表示如果表空间不存在,则必须创建它。

state=absent 表示如果表空间存在,则必须删除它。state=absentlocation, owner, i(set) 互斥。

有关检查模式限制的信息,请参阅“注释”部分。

选择

  • "absent" (不存在)

  • "present" ← (默认)

表空间

别名: name

字符串 / 必需

要添加或删除的表空间的名称。

trust_input

布尔值

在 community.postgresql 0.2.0 中添加

如果为 false,则检查参数 *tablespace*、*location*、*owner*、*rename_to*、*session_role*、*settings_list* 的值是否可能存在风险。

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

选择

  • false

  • true ← (默认)

属性

属性

支持

描述

check_mode

支持: 部分

state=absentstate=present (如果表空间不存在,则为后者) 不支持检查模式,因为相应的 PostgreSQL DROP 和 CREATE TABLESPACE 命令不能在事务块内运行。

可以在 check_mode 中运行并返回更改状态预测,而无需修改目标。

注释

注意

  • 默认身份验证假设您正在以主机上的 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 TABLESPACE 参考

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

ALTER TABLESPACE 参考

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

DROP TABLESPACE 参考

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

示例

- name: Create a new tablespace called acme and set bob as an its owner
  community.postgresql.postgresql_tablespace:
    name: acme
    owner: bob
    location: /data/foo
    comment: "Bob's tablespace"

- name: Create a new tablespace called bar with tablespace options
  community.postgresql.postgresql_tablespace:
    name: bar
    set:
      random_page_cost: 1
      seq_page_cost: 1

- name: Reset random_page_cost option
  community.postgresql.postgresql_tablespace:
    name: bar
    set:
      random_page_cost: reset

- name: Rename the tablespace from bar to pcie_ssd
  community.postgresql.postgresql_tablespace:
    name: bar
    rename_to: pcie_ssd

- name: Drop tablespace called bloat
  community.postgresql.postgresql_tablespace:
    name: bloat
    state: absent

返回值

常用返回值记录在此处 这里, 以下是此模块独有的字段

描述

注释

字符串

表空间注释。

返回: 成功

示例: "测试表空间"

location

字符串

文件系统中表空间的路径。

返回: 成功

示例: "/incredible/fast/ssd"

newname

字符串

新的表空间名称。

返回: 如果存在

示例: "new_ssd"

options

字典

表空间选项。

返回: 成功

示例: {"random_page_cost": 1, "seq_page_cost": 1}

owner

字符串

表空间所有者。

返回: 成功

示例: "Bob"

queries

字符串

尝试执行的查询列表。

返回: 成功

示例: "[\"CREATE TABLESPACE bar LOCATION '/incredible/ssd'\"]"

状态

字符串

执行结束时表空间的状态。

返回: 成功

示例: "present"

tablespace

字符串

表空间名称。

返回: 成功

示例: "ssd"

作者

  • Flavien Chantelot (@Dorn-)

  • Antoine Levy-Lambert (@antoinell)

  • Andrew Klychkov (@Andersson007)

  • Daniele Giudice (@RealGreenDragon)