community.mongodb.mongodb_status 模块 – 验证副本集的状态。

注意

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

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

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

要在 playbook 中使用它,请指定:community.mongodb.mongodb_status

community.mongodb 1.0.0 中的新增功能

概要

  • 验证副本集的状态。

  • 该模块期望所有副本集节点都为 PRIMARY、SECONDARY 或 ARBITER。

  • 如果需要,将等待超时,直到副本集状态收敛。

  • 也可以用于查找当前的 PRIMARY 成员(请参阅示例)。

要求

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

  • pymongo

参数

参数

注释

atlas_auth

布尔值

用于 MongoDB Atlas 实例的身份验证路径

选择

  • false ← (默认)

  • true

auth_mechanism

字符串

身份验证类型。

选择

  • "SCRAM-SHA-256"

  • "SCRAM-SHA-1"

  • "MONGODB-X509"

  • "GSSAPI"

  • "PLAIN"

connection_options

列表 / 元素=任何

其他连接选项。

以字典或字符串列表的形式提供,其中包含用 ‘=’ 分隔的键值对。

interval

整数

轮询执行之间等待的秒数。

默认: 30

login_database

字符串

存储登录凭据的数据库。

默认: "admin"

login_host

字符串

要登录的 MongoDB 实例所在的主机。

默认: "localhost"

login_password

字符串

用于身份验证的密码。

当指定 login_user 时,是必需的。

login_port

整数

要登录的 MongoDB 服务器端口。

默认: 27017

login_user

字符串

用于登录的 MongoDB 用户。

当指定 login_password 时,是必需的。

poll

整数

在集合收敛或失败之前,查询副本集状态的最大次数。

默认: 1

replica_set

字符串

副本集名称。

默认: "rs0"

ssl

别名:tls

布尔值

连接到数据库时是否使用 SSL 连接。

选择

  • false ← (默认)

  • true

ssl_ca_certs

别名:tlsCAFile

字符串

ssl_ca_certs 选项采用 CA 文件的路径。

ssl_cert_reqs

别名:tlsAllowInvalidCertificates

字符串

指定是否需要来自连接另一端的证书,以及如果提供是否将对其进行验证。

选择

  • "CERT_NONE"

  • "CERT_OPTIONAL"

  • "CERT_REQUIRED" ← (默认)

ssl_certfile

别名:tlsCertificateKeyFile

字符串

使用 ssl_certfile 选项提供客户端证书。

ssl_crlfile

字符串

ssl_crlfile 选项采用 CRL 文件的路径。

ssl_keyfile

字符串

客户端证书的私钥。

ssl_pem_passphrase

别名:tlsCertificateKeyFilePassword

字符串

用于解密加密私钥的密码。

strict_compatibility

布尔值

对 pymongo 和 MongoDB 软件版本强制执行严格的要求

选择

  • false

  • true ← (默认)

验证

字符串

要在副本集上执行的验证类型。

默认,适用于大多数情况。验证服务器数量是否为奇数,其中一个是 PRIMARY 状态,其余的为 SECONDARY 或 ARBITER 状态。

投票,检查投票数是否为奇数,其中一个是 PRIMARY 状态,其余的为 SECONDARY 或 ARBITER 状态。这里需要进行身份验证才能获取副本集配置。

最小,仅检查是否有一个服务器处于 PRIMARY 状态,其余的为 SECONDARY 或 ARBITER 状态。

选择

  • "default" ← (默认)

  • "votes"

  • "minimal"

注释

注意

示例

- name: Check replicaset is healthy, fail if not after first attempt
  community.mongodb.mongodb_status:
    replica_set: rs0
  when: ansible_hostname == "mongodb1"

- name: Wait for the replicaset rs0 to converge, check 5 times, 10 second interval between checks
  community.mongodb.mongodb_status:
    replica_set: rs0
    poll: 5
    interval: 10
  when: ansible_hostname == "mongodb1"

# Get the replicaset status and then lookup the primary's hostname and save to a variable
- name: Ensure replicaset is stable before beginning
  community.mongodb.mongodb_status:
    login_user: "{{ admin_user }}"
    login_password: "{{ admin_user_password }}"
    poll: 3
    interval: 10
  register: rs

- name: Lookup PRIMARY replicaset member
  set_fact:
    primary: "{{ item.key.split('.')[0] }}"
  loop: "{{ lookup('dict', rs.replicaset) }}"
  when: "'PRIMARY' in item.value"

返回值

通用返回值记录在此处,以下是此模块特有的字段

描述

failed

布尔值

模块是否失败。

返回: 总是

iterations

整数

模块查询副本集状态的次数。

返回: 总是

msg

字符串

状态消息。

返回: 总是

replicaset

字典

如果可以获取,则为最后一次查询的副本集所有成员的状态。

返回: 总是

作者

  • Rhys Campbell (@rhysmeister)