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) 证书的文件名。

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

cascade

布尔值

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

state 不是 absent 时将被忽略。

选项

  • false ← (默认)

  • true

comment

字符串

在 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

发布

列表 / 元素=字符串

用于订阅的发布者上的发布名称。

state 不是 present 时将被忽略。

会话角色

字符串

在 community.postgresql 0.2.0 中添加

连接后切换到会话角色。指定的会话角色必须是当前登录用户所属的角色。

SQL 命令的权限检查将如同会话角色是最初登录的角色那样执行。

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)