community.mongodb.mongodb_replicaset 模块 – 初始化 MongoDB 副本集。

注意

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

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

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

要在剧本中使用它,请指定:community.mongodb.mongodb_replicaset

community.mongodb 1.0.0 中的新增功能

概要

要求

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

  • pymongo

参数

参数

注释

arbiter_at_index

整数

标识数组中充当仲裁者的成员的位置。

atlas_auth

布尔值

用于 MongoDB Atlas 实例的认证路径

选项

  • false ← (默认)

  • true

auth_mechanism

字符串

身份验证类型。

选项

  • "SCRAM-SHA-256"

  • "SCRAM-SHA-1"

  • "MONGODB-X509"

  • "GSSAPI"

  • "PLAIN"

chaining_allowed

布尔值

settings.chaining_allowed=true 时,副本集允许辅助成员从其他辅助成员复制。

settings.chaining_allowed=false 时,辅助成员只能从主成员复制。

选项

  • false

  • true ← (默认)

cluster_cmd

字符串

模块应用来获取有关我们正在连接到的 MongoDB 节点的信息的命令。

选项

  • "isMaster"

  • "hello" ← (默认)

connection_options

列表 / 元素=任意

附加连接选项。

提供为包含用“=”分隔的键值对的字典或字符串列表。

debug

布尔值

添加其他调试信息。

选项

  • false ← (默认)

  • true

election_timeout_millis

整数

检测副本集的主节点不可访问时的时间限制(以毫秒为单位)。

默认值: 10000

force

布尔值

仅当 reconfigure = true 时才相关。

指定 true 强制可用的副本集成员接受新配置。

强制重新配置可能会导致意外或不希望的行为,包括回滚“多数”已提交的写入。

选项

  • false ← (默认)

  • true

heartbeat_timeout_secs

整数

副本集成员等待彼此成功心跳的秒数。

如果成员没有及时响应,其他成员会将违规成员标记为不可访问。

该设置仅在使用 protocol_version=0 时适用。使用 protocol_version=1 时,相关设置是 settings.election_timeout_millis

默认值: 10

login_database

字符串

存储登录凭据的数据库。

默认值: "admin"

login_host

字符串

运行要登录的 MongoDB 实例的主机。

默认值: "localhost"

login_password

字符串

用于身份验证的密码。

当指定 login_user 时,这是必需的。

login_port

整数

要登录的 MongoDB 服务器端口。

默认值: 27017

login_user

字符串

要登录的 MongoDB 用户。

当指定 login_password 时,这是必需的。

max_time_ms

整数

指定处理副本集重新配置的累积时间限制(以毫秒为单位)。

members

列表 / 元素=任意

由副本集成员组成的 YAML 列表。

也接受 CSV 字符串,例如 mongodb1:27017,mongodb2:27017,mongodb3:27017。

字典也可用于指定高级副本集成员选项。

如果没有提供端口号,则假定为 27017。

protocol_version

整数

副本集选举协议的版本。

选项

  • 0

  • 1 ← (默认)

reconfigure

布尔值

此功能目前处于实验阶段。请彻底测试您的场景。

请查阅集成测试文件以了解受支持的场景 - \ [集成测试](https://github.com/ansible-collections/community.mongodb/tree/master/tests/integration/targets/mongodb_replicaset/tasks)。\ 查看以 330 开头的文件。

是否执行副本集重新配置操作。

仅当副本集已存在时才相关。

每次调用只能移除或添加一个成员。

重新配置时,成员应全部为字符串或全部为字典。

目前不支持副本集设置文档更改。

选项

  • false ← (默认)

  • true

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 ← (默认)

validate

布尔值

对提供的副本集配置执行一些基本验证。

选项

  • false

  • true ← (默认)

备注

注意

示例

# Create a replicaset called 'rs0' with the 3 provided members
- name: Ensure replicaset rs0 exists
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_user: admin
    login_password: admin
    replica_set: rs0
    members:
    - mongodb1:27017
    - mongodb2:27017
    - mongodb3:27017
  when: groups.mongod.index(inventory_hostname) == 0

# Create two single-node replicasets on the localhost for testing
- name: Ensure replicaset rs0 exists
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_port: 3001
    login_user: admin
    login_password: secret
    login_database: admin
    replica_set: rs0
    members: localhost:3001
    validate: no

- name: Ensure replicaset rs1 exists
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_port: 3002
    login_user: admin
    login_password: secret
    login_database: admin
    replica_set: rs1
    members: localhost:3002
    validate: no

- name: Create a replicaset and use a custom priority for each member
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_user: admin
    login_password: admin
    replica_set: rs0
    members:
    - host: "localhost:3001"
      priority: 1
    - host: "localhost:3002"
      priority: 0.5
    - host: "localhost:3003"
      priority: 0.5
  when: groups.mongod.index(inventory_hostname) == 0

- name: Create replicaset rs1 with options and member tags
  community.mongodb.mongodb_replicaset:
    login_host: localhost
    login_port: 3001
    login_database: admin
    replica_set: rs1
    members:
    - host: "localhost:3001"
      priority: 1
      tags:
        dc: "east"
        usage: "production"
    - host: "localhost:3002"
      priority: 1
      tags:
        dc: "east"
        usage: "production"
    - host: "localhost:3003"
      priority: 0
      hidden: true
      slaveDelay: 3600
      tags:
        dc: "west"
        usage: "reporting"

- name: Replicaset with one arbiter node (mongodb3 - index is zero-based)
  community.mongodb.mongodb_replicaset:
    login_user: admin
    login_password: admin
    replica_set: rs0
    members:
      - mongodb1:27017
      - mongodb2:27017
      - mongodb3:27017
    arbiter_at_index: 2
  when: groups.mongod.index(inventory_hostname) == 0

- name: Add a new member to a replicaset - Safe for pre-5.0 consult documentation - https://docs.mongodb.com/manual/tutorial/expand-replica-set/
  block:
    - name: Create replicaset with module - with dicts
      community.mongodb.mongodb_replicaset:
        replica_set: "rs0"
        members:
           - host: localhost:3001
           - host: localhost:3002
           - host: localhost:3003

    - name: Wait for the replicaset to stabilise
      community.mongodb.mongodb_status:
        replica_set: "rs0"
        poll: 5
        interval: 10

    - name: Remove a member from the replicaset
      community.mongodb.mongodb_replicaset:
        replica_set: "rs0"
        reconfigure: yes
        members:
           - host: localhost:3001
           - host: localhost:3002

    - name: Wait for the replicaset to stabilise after member removal
      community.mongodb.mongodb_status:
        replica_set: "rs0"
        validate: minimal
        poll: 5
        interval: 10

    - name: Add a member to the replicaset
      community.mongodb.mongodb_replicaset:
        replica_set: "rs0"
        reconfigure: yes
        members:
           - host: localhost:3001
           - host: localhost:3002
           - host: localhost:3004
             hidden: true
             votes: 0
             priority: 0

    - name: Wait for the replicaset to stabilise after member addition
      community.mongodb.mongodb_status:
        replica_set: "rs0"
        validate: minimal
        poll: 5
        interval: 30

    - name: Reconfigure the replicaset - Make member 3004 a normal voting member
      community.mongodb.mongodb_replicaset:
        replica_set: "rs0"
        reconfigure: yes
        members:
           - host: localhost:3001
           - host: localhost:3002
           - host: localhost:3004
             hidden: false
             votes: 1
             priority: 1

    - name: Wait for the replicaset to stabilise
      community.mongodb.mongodb_status:
        replica_set: "rs0"
        poll: 5
        interval: 30

返回值

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

描述

mongodb_replicaset

字符串

已创建的副本集的名称。

返回值: 成功

reconfigure

布尔值

如果发生了副本集重新配置。

返回值: 在副本集重新配置时

作者

  • Rhys Campbell (@rhysmeister)