community.postgresql.postgresql_publication 模块 – 添加、更新或删除 PostgreSQL 发布
注意
此模块是 community.postgresql 集合(版本 3.9.0)的一部分。
如果您使用的是 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.postgresql
。您需要满足其他要求才能使用此模块,请参阅 要求 了解详细信息。
要在 playbook 中使用它,请指定:community.postgresql.postgresql_publication
。
概要
添加、更新或删除 PostgreSQL 发布。
要求
以下要求需要在执行此模块的主机上满足。
psycopg2 >= 2.5.1
参数
参数 |
注释 |
---|---|
指定包含 SSL 证书颁发机构 (CA) 证书的文件名。 如果该文件存在,则将验证服务器的证书是否由此机构签名。 |
|
删除发布依赖项。仅当 state=absent 时有效。 选项
|
|
要添加到发布的表及其列的列表。 如果未传递表的列,则将整体发布该表。 与 tables 和 tables_in_schema 互斥。 |
|
在发布上设置注释。 要重置注释,请传递一个空字符串。 |
|
要传递给 libpg 的任何其他参数。 这些参数优先。 默认: |
|
要连接的数据库的名称,以及将在其中更改发布状态的数据库。 |
|
运行数据库的主机。 如果在使用 默认: |
|
此模块应使用此密码来建立其 PostgreSQL 会话。 默认: |
|
用于本地连接的 Unix 域套接字的路径。 默认: |
|
此模块应使用此用户名来建立其 PostgreSQL 会话。 默认: |
|
要添加、更新或删除的发布的名称。 |
|
发布所有者。 如果未定义 owner,则所有者将设置为 login_user 或 session_role。 |
|
包含可选发布参数的字典。 可用参数取决于 PostgreSQL 版本。 |
|
要连接的数据库端口。 默认: |
|
连接后切换到 session_role。指定的 session_role 必须是当前 login_user 所属的角色。 SQL 命令的权限检查就像 session_role 是最初登录的角色一样进行。 |
|
指定客户端 SSL 证书的文件名。 |
|
指定用于客户端证书的密钥的位置。 |
|
确定是否以及以什么优先级与服务器协商安全的 SSL TCP/IP 连接。 有关模式的更多信息,请参阅 https://postgresql.ac.cn/docs/current/static/libpq-ssl.html。
选项
|
|
发布状态。 选项
|
|
要添加到发布的表列表。 如果未设置任何值,则以所有表为目标。 如果发布已存在于特定表,并且未传递 tables,则不会进行任何更改。 如果需要将所有表添加到具有相同名称的发布中,请删除现有表并创建新表,而无需传递 tables。 与 tables_in_schema 和 columns 互斥。 |
|
指定要添加到发布中的模式列表,以复制这些模式中所有表的更改。 如果要删除所有模式,请显式传递一个空列表 PostgreSQL 15 及更高版本支持。 与 tables 和 columns 互斥。 |
|
如果为 仅当通过参数进行 SQL 注入时,使用 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 完全 |
可以在 check_mode 中运行,并返回更改状态预测,而无需修改目标。 |
注释
注意
PostgreSQL 版本必须为 10 或更高版本。
默认身份验证假定您以
postgres
帐户登录或 sudo 到该帐户。为避免“Peer authentication failed for user postgres”错误,请使用 postgres 用户作为 become_user。
此模块使用
psycopg
,一个 Python PostgreSQL 数据库适配器。您必须确保在主机上安装了psycopg2 >= 2.5.1
或psycopg3 >= 3.1.8
,然后才能使用此模块。如果远程主机是 PostgreSQL 服务器(默认情况),则还必须在远程主机上安装 PostgreSQL。
对于基于 Ubuntu 的系统,请在使用此模块之前,在远程主机上安装
postgresql
、libpq-dev
和python3-psycopg2
包。
另请参阅
另请参阅
- CREATE PUBLICATION 参考
CREATE PUBLICATION 命令文档的完整参考。
- ALTER PUBLICATION 参考
ALTER PUBLICATION 命令文档的完整参考。
- DROP PUBLICATION 参考
DROP PUBLICATION 命令文档的完整参考。
示例
- name: Create a new publication with name "acme" targeting all tables in database "test"
community.postgresql.postgresql_publication:
db: test
name: acme
comment: Made by Ansible
- name: Create publication "acme" publishing only prices and vehicles tables
community.postgresql.postgresql_publication:
name: acme
tables:
- prices
- vehicles
- name: Create publication "acme" publishing only prices table and id and named from vehicles tables
community.postgresql.postgresql_publication:
name: acme
columns:
prices:
vehicles:
- id
- name
- name: Create a new publication "acme" for tables in schema "myschema"
community.postgresql.postgresql_publication:
db: test
name: acme
tables_in_schema: myschema
- name: Remove all schemas from "acme" publication
community.postgresql.postgresql_publication:
db: test
name: acme
tables_in_schema: []
- name: >
Create publication "acme", set user alice as an owner, targeting all tables
Allowable DML operations are INSERT and UPDATE only
community.postgresql.postgresql_publication:
name: acme
owner: alice
parameters:
publish: 'insert,update'
- name: >
Assuming publication "acme" exists and there are targeted
tables "prices" and "vehicles", add table "stores" to the publication
community.postgresql.postgresql_publication:
name: acme
tables:
- prices
- vehicles
- stores
- name: Remove publication "acme" if exists in database "test"
community.postgresql.postgresql_publication:
db: test
name: acme
state: absent
返回值
常见返回值记录在此处 此处,以下是此模块独有的字段
键 |
描述 |
---|---|
标志指示是否发布了所有表。 返回: 如果发布存在 示例: |
|
标志指示在运行时结束时发布是否存在。 返回: 成功 示例: |
|
运行时结束时发布的所有者。 返回: 如果发布存在 示例: |
|
运行时结束时的发布参数。 返回: 如果发布存在 示例: |
|
执行的查询列表。 返回: 成功 示例: |
|
运行时结束时发布中的表列表。 如果发布了所有表,则返回空列表。 返回: 如果发布存在 示例: |