community.postgresql.postgresql_subscription 模块 – 添加、更新或删除 PostgreSQL 订阅

注意

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

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

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

要在 playbook 中使用它,请指定: community.postgresql.postgresql_subscription

community.postgresql 0.2.0 中的新功能

概要

  • 添加、更新或删除 PostgreSQL 订阅。

要求

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

  • psycopg2 >= 2.5.1

参数

参数

注释

ca_cert

别名:ssl_rootcert

字符串

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

如果该文件存在,将验证服务器的证书是否由此类机构之一签名。

级联

布尔值

删除订阅依赖项。 仅在 state=absent 时有效。

state 不是 absent 时忽略。

选项

  • false ←(默认)

  • true

注释

字符串

在 community.postgresql 3.3.0 中添加

在订阅上设置注释。

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

connect_params

字典

在 community.postgresql 2.3.0 中添加

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

这些参数具有优先权。

默认值: {}

connparams

字典

用于连接到发布者的连接字典参数值。

有关更多信息,请参阅 https://postgresql.ac.cn/docs/current/libpq-connect.html#LIBPQ-CONNSTRING

state 不是 present 时忽略。

当现有订阅的连接参数无法从服务器获得时(例如在 CloudSQL 中)忽略。

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

字符串 / 必需

要添加、更新或删除的订阅的名称。

owner

字符串

订阅所有者。

如果未定义 owner,则所有者将设置为 login_usersession_role

state 不是 present 时忽略。

port

别名:login_port

整数

要连接的数据库端口。

默认值: 5432

publications

列表 / 元素=字符串

要在订阅中使用的发布者上的发布名称。

state 不是 present 时忽略。

session_role

字符串

在 community.postgresql 0.2.0 中添加

连接后切换到 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"

状态

字符串

订阅的状态。

present 表示如果 *name* 订阅不存在,则会创建它。

absent 表示如果 *name* 订阅存在,则会删除它。

refresh 表示如果 *name* 订阅存在,则会刷新它。从发布者获取缺失的表信息。总是返回``changed``为``True``。这将启动自上次调用 REFRESH PUBLICATION 或自 CREATE SUBSCRIPTION 以来添加到订阅的发布中的表的复制。一旦复制开始,应该复制被订阅的发布中的现有数据。

有关 refresh 的更多信息,请参阅 https://postgresql.ac.cn/docs/current/sql-altersubscription.html

选项

  • "absent"

  • "present" ← (默认)

  • "refresh"

subsparams

字典

订阅的可选参数字典,例如 copy_data、enabled、create_slot 等。

更新订阅允许的键是 enabledslot_namesynchronous_commitpublication_name

有关创建新订阅的可用参数,请参阅 https://postgresql.ac.cn/docs/current/sql-createsubscription.html

state 不是 present 时忽略。

trust_input

布尔值

在 community.postgresql 0.2.0 中添加

如果为 false,则检查参数 *name*、*publications*、*owner*、*session_role*、*connparams*、*subsparams* 的值是否可能存在危险。

只有当通过参数可能发生 SQL 注入时,使用 true 才有意义。

选项

  • false

  • true ← (默认)

属性

属性

支持

描述

check_mode

支持: 完全

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

注释

注意

  • PostgreSQL 版本必须为 10 或更高版本。

  • 默认身份验证假定您要么以 postgres 帐户登录,要么以 sudo 身份登录到主机。

  • 为避免“用户 postgres 的对等身份验证失败”错误,请使用 postgres 用户作为 become_user

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

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

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

另请参阅

另请参阅

community.postgresql.postgresql_publication

添加、更新或删除 PostgreSQL 发布。

community.postgresql.postgresql_info

收集有关 PostgreSQL 服务器的信息。

CREATE SUBSCRIPTION 参考

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

ALTER SUBSCRIPTION 参考

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

DROP SUBSCRIPTION 参考

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

示例

- name: >
    Create acme subscription in mydb database using acme_publication and
    the following connection parameters to connect to the publisher.
    Set the subscription owner as alice.
  community.postgresql.postgresql_subscription:
    db: mydb
    name: acme
    state: present
    publications: acme_publication
    owner: alice
    connparams:
      host: 127.0.0.1
      port: 5432
      user: repl
      password: replpass
      dbname: mydb
    comment: Made by Ansible

- name: Assuming that acme subscription exists, try to change conn parameters
  community.postgresql.postgresql_subscription:
    db: mydb
    name: acme
    connparams:
      host: 127.0.0.1
      port: 5432
      user: repl
      password: replpass
      connect_timeout: 100

- name: Refresh acme publication
  community.postgresql.postgresql_subscription:
    db: mydb
    name: acme
    state: refresh

- name: Drop acme subscription from mydb with dependencies (cascade=true)
  community.postgresql.postgresql_subscription:
    db: mydb
    name: acme
    state: absent
    cascade: true

- name: Assuming that acme subscription exists and enabled, disable the subscription
  community.postgresql.postgresql_subscription:
    db: mydb
    name: acme
    state: present
    subsparams:
      enabled: false

返回值

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

描述

exists

布尔值

标志指示运行时结束时订阅是否存在。

返回: 成功

示例: true

final_state

字典

运行时结束时的订阅配置。

返回: 成功

示例: {"conninfo": {}, "enabled": true, "owner": "postgres", "slotname": "test", "synccommit": true}

initial_state

字典

运行时开始时的订阅配置。

返回: 成功

示例: {"conninfo": {}, "enabled": true, "owner": "postgres", "slotname": "test", "synccommit": true}

name

字符串

订阅的名称。

返回: 成功

示例: "acme"

queries

字符串

已执行的查询列表。

返回: 成功

示例: "['DROP SUBSCRIPTION \"mysubscription\"']"

作者

  • Andrew Klychkov (@Andersson007)