community.postgresql.postgresql_ping 模块 – 检查远程 PostgreSQL 服务器可用性

注意

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

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

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

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

概要

  • 用于检查远程 PostgreSQL 服务器可用性的简单模块。

要求

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

  • psycopg2 >= 2.5.1

参数

参数

注释

ca_cert

别名:ssl_rootcert

字符串

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

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

connect_params

字典

在 community.postgresql 2.3.0 中添加

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

这些参数优先。

默认值: {}

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"

port

别名:login_port

整数

要连接到的数据库端口。

默认值: 5432

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"

trust_input

布尔值

在 community.postgresql 0.2.0 中添加

如果为 false,则检查 *session_role* 的值是否可能存在危险。

只有当可能通过 *session_role* 进行 SQL 注入时,使用 false 才有意义。

选项

  • false

  • true ← (默认)

属性

属性

支持

描述

check_mode

支持:完全支持

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

备注

注意

  • 默认身份验证假设您正在以主机上的 postgres 帐户身份登录或使用 sudo 命令登录。

  • 为避免“Peer authentication failed for user postgres”错误,请使用 postgres 用户作为become_user

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

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

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

另请参见

另见

community.postgresql.postgresql_info

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

示例

# PostgreSQL ping dbsrv server from the shell:
# ansible dbsrv -m postgresql_ping

# In the example below you need to generate certificates previously.
# See https://postgresql.ac.cn/docs/current/libpq-ssl.html for more information.
- name: >
    Ping PostgreSQL server using non-default credentials and SSL
    registering the return values into the result variable for future use
  community.postgresql.postgresql_ping:
    db: protected_db
    login_host: dbsrv
    login_user: secret
    login_password: secret_pass
    ca_cert: /root/root.crt
    ssl_mode: verify-full
  register: result
  # If you need to fail when the server is not available,
  # uncomment the following line:
  #failed_when: not result.is_available

# You can use the registered result with another task
- name: This task should be executed only if the server is available
  # ...
  when: result.is_available == true

返回值

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

描述

conn_err_msg

字符串

在 community.postgresql 1.7.0 中添加

连接错误消息。

返回:成功

示例:""

is_available

布尔值

PostgreSQL 服务器可用性。

返回:成功

示例:true

server_version

字典

PostgreSQL 服务器版本。

返回:成功

示例:{"full": "13.2", "major": 13, "minor": 2, "raw": "PostgreSQL 13.2 on x86_64-pc-linux-gnu"}

作者

  • Andrew Klychkov (@Andersson007)