community.postgresql.postgresql_slot 模块 – 从 PostgreSQL 数据库添加或删除复制槽
注意
此模块是 community.postgresql 集合(版本 3.9.0)的一部分。
如果您正在使用 ansible 包,您可能已经安装了这个集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install community.postgresql。您需要进一步的要求才能使用此模块,请参阅 要求 以了解详细信息。
要在 playbook 中使用它,请指定:community.postgresql.postgresql_slot。
概要
- 从 PostgreSQL 数据库添加或删除物理或逻辑复制槽。 
要求
以下要求需要在执行此模块的主机上满足。
- psycopg2 >= 2.5.1 
参数
| 参数 | 注释 | 
|---|---|
| 指定包含 SSL 证书颁发机构 (CA) 证书的文件名。 如果该文件存在,则将验证服务器的证书是否由这些机构之一签名。 | |
| 要传递给 libpg 的任何其他参数。 这些参数具有优先权。 默认值:  | |
| 要连接的数据库的名称。 | |
| 可选参数,当  从 PostgreSQL 版本 9.6 开始可用。 仅与 *slot_type=physical* 一起使用。 与 *slot_type=logical* 互斥。 选择 
 | |
| 运行数据库的主机。 如果在使用  默认值:  | |
| 此模块应使用以建立其 PostgreSQL 会话的密码。 默认值:  | |
| 用于本地连接的 Unix 域套接字的路径。 默认值:  | |
| 此模块应使用以建立其 PostgreSQL 会话的用户名。 默认值:  | |
| 要添加或删除的复制槽的名称。 | |
| 所有逻辑槽都必须指示它们正在使用哪个输出插件解码器。 此参数不适用于物理槽。 它将被忽略,如果 *slot_type=physical*。 默认值:  | |
| 要连接的数据库端口。 默认值:  | |
| 连接后切换到 session_role。指定的 session_role 必须是当前 login_user 是其成员的角色。 SQL 命令的权限检查的执行方式就像 session_role 是最初登录的用户一样。 | |
| 槽类型。 选择 
 | |
| 指定客户端 SSL 证书的文件名。 | |
| 指定用于客户端证书的密钥的位置。 | |
| 确定是否以及以何种优先级与服务器协商安全的 SSL TCP/IP 连接。 有关模式的更多信息,请参阅 https://postgresql.ac.cn/docs/current/static/libpq-ssl.html。 
 选择 
 | |
| 槽状态。 *state=present* 表示槽必须在系统中存在。 *state=absent* 表示必须从 *target_roles* 撤销 *groups*。 选择 
 | |
| 如果  仅当通过 *session_role* 可能发生 SQL 注入时,才使用  选择 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 支持: 完全 | 可以在check_mode模式下运行并返回更改状态预测,而不会修改目标。 | 
说明
注意
- 物理复制槽是在PostgreSQL 9.4版本中引入的,而逻辑复制槽是从10.0版本开始添加的。 
- 默认的身份验证假设您正在以 - 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软件包。
另请参阅
另请参阅
- PostgreSQL pg_replication_slots 视图参考
- PostgreSQL pg_replication_slots 视图的完整参考。 
- PostgreSQL 流复制协议参考
- PostgreSQL 流复制协议文档的完整参考。 
- PostgreSQL 逻辑复制协议参考
- PostgreSQL 逻辑复制协议文档的完整参考。 
示例
- name: Create physical_one physical slot if doesn't exist
  become_user: postgres
  community.postgresql.postgresql_slot:
    slot_name: physical_one
    db: ansible
- name: Remove physical_one slot if exists
  become_user: postgres
  community.postgresql.postgresql_slot:
    slot_name: physical_one
    db: ansible
    state: absent
- name: Create logical_one logical slot to the database acme if doesn't exist
  community.postgresql.postgresql_slot:
    name: logical_slot_one
    slot_type: logical
    state: present
    output_plugin: custom_decoder_one
    db: "acme"
- name: Remove logical_one slot if exists from the cluster running on another host and non-standard port
  community.postgresql.postgresql_slot:
    name: logical_one
    login_host: mydatabase.example.org
    port: 5433
    login_user: ourSuperuser
    login_password: thePassword
    state: absent
返回值
通用返回值在此处有文档记录 这里,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 槽的名称。 返回: 成功 示例:  | |
| 已执行查询的列表。 返回: 成功 示例:  | 
