community.postgresql.postgresql_membership 模块 – 在组中添加或删除 PostgreSQL 角色
注意
此模块是 community.postgresql 集合 (版本 3.9.0) 的一部分。
如果您使用的是 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.postgresql
。您需要其他要求才能使用此模块,有关详细信息,请参阅 需求。
要在 playbook 中使用它,请指定:community.postgresql.postgresql_membership
。
概要
在组(其他角色)中添加或删除 PostgreSQL 角色。
用户是具有登录权限的角色。
组是 PostgreSQL 角色,通常没有 LOGIN 权限。
常见用例
使用 community.postgresql.postgresql_user 模块和 `role_attr_flags=NOLOGIN` 添加新的组
使用 community.postgresql.postgresql_privs 模块授予它们所需的权限
使用此模块将所需的 PostgreSQL 用户添加到新组。
需求
执行此模块的主机需要以下需求。
psycopg2 >= 2.5.1
参数
参数 |
注释 |
---|---|
指定包含 SSL 证书颁发机构 (CA) 证书的文件的名称。 如果文件存在,则服务器的证书将被验证是否已由这些机构之一签名。 |
|
要传递给 libpg 的任何其他参数。 这些参数优先。 默认值: |
|
要连接到的数据库的名称。 |
|
如果 选项
|
|
需要授予或撤销给 `target_roles` 的组(角色)列表。 |
|
运行数据库的主机。 如果您在使用 默认值: |
|
此模块应用于建立其 PostgreSQL 会话的密码。 默认值: |
|
本地连接的 Unix 域套接字的路径。 默认值: |
|
此模块应用于建立其 PostgreSQL 会话的用户名。 默认值: |
|
要连接到的数据库端口。 默认值: |
|
连接后切换到 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` 表示必须将 `groups` 授予 `target_roles`。 `state=absent` 表示必须从 `target_roles` 撤销 `groups`。 `state=exact` 表示 `target_roles` 将仅是 `groups` 的成员(自 community.postgresql 2.2.0 起可用)。任何其他组都将从 `target_roles` 中撤销。 选项
|
|
目标角色列表(组将被授予这些角色)。 |
|
如果为 只有当可能通过参数进行 SQL 注入时,使用 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持: 完全支持 |
可以在 check_mode 下运行,并在不修改目标的情况下返回更改状态预测。 |
备注
注意
默认身份验证假设您正在以主机上的
postgres
帐户登录或使用 sudo。为避免“用户 postgres 的对等身份验证失败”错误,请使用 postgres 用户作为 become_user。
此模块使用
psycopg
,这是一个 Python PostgreSQL 数据库适配器。在使用此模块之前,必须确保主机上安装了psycopg2 >= 2.5.1
或psycopg3 >= 3.1.8
。如果远程主机是 PostgreSQL 服务器(这是默认情况),则必须在远程主机上安装 PostgreSQL。
对于基于 Ubuntu 的系统,在使用此模块之前,请在远程主机上安装
postgresql
、libpq-dev
和python3-psycopg2
包。
另请参阅
另请参阅
- community.postgresql.postgresql_user
创建、更改或删除 PostgreSQL 服务器实例中的用户(角色)。
- community.postgresql.postgresql_privs
授予或撤销 PostgreSQL 数据库对象的权限。
- community.postgresql.postgresql_owner
更改 PostgreSQL 数据库对象的拥有者。
- PostgreSQL 角色成员资格参考
PostgreSQL 角色成员资格文档的完整参考。
- PostgreSQL 角色属性参考
PostgreSQL 角色属性文档的完整参考。
示例
- name: Grant role read_only to alice and bob
community.postgresql.postgresql_membership:
group: read_only
target_roles:
- alice
- bob
state: present
# you can also use target_roles: alice,bob,etc to pass the role list
- name: Revoke role read_only and exec_func from bob. Ignore if roles don't exist
community.postgresql.postgresql_membership:
groups:
- read_only
- exec_func
target_role: bob
fail_on_role: false
state: absent
- name: >
Make sure alice and bob are members only of marketing and sales.
If they are members of other groups, they will be removed from those groups
community.postgresql.postgresql_membership:
group:
- marketing
- sales
target_roles:
- alice
- bob
state: exact
- name: Make sure alice and bob do not belong to any groups
community.postgresql.postgresql_membership:
group: []
target_roles:
- alice
- bob
state: exact
返回值
常用返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
已授予的组和角色的字典。 返回:如果 state=present 示例: |
|
已执行查询的列表。 返回:成功 示例: |
|
已撤销的组和角色的字典。 返回:如果 state=absent 示例: |
|
尝试设置的成员资格状态。 返回:成功 示例: |