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 中的新增功能
概要
在新部署中初始化 MongoDB 副本集。
验证现有部署的副本集名称。
支持高级副本集成员(重新)配置(参见示例)。
根据 [最佳实践] (https://mongodb.ac.cn/docs/manual/tutorial/deploy-replica-set-with-keyfile-access-control/),在添加用户之前初始化副本集。
要求
在执行此模块的主机上需要以下要求。
pymongo
参数
参数 |
注释 |
---|---|
标识数组中充当仲裁者的成员的位置。 |
|
用于 MongoDB Atlas 实例的认证路径 选项
|
|
身份验证类型。 选项
|
|
当 settings.chaining_allowed=true 时,副本集允许辅助成员从其他辅助成员复制。 当 settings.chaining_allowed=false 时,辅助成员只能从主成员复制。 选项
|
|
模块应用来获取有关我们正在连接到的 MongoDB 节点的信息的命令。 选项
|
|
附加连接选项。 提供为包含用“=”分隔的键值对的字典或字符串列表。 |
|
添加其他调试信息。 选项
|
|
检测副本集的主节点不可访问时的时间限制(以毫秒为单位)。 默认值: |
|
仅当 reconfigure = true 时才相关。 指定 true 强制可用的副本集成员接受新配置。 强制重新配置可能会导致意外或不希望的行为,包括回滚“多数”已提交的写入。 选项
|
|
副本集成员等待彼此成功心跳的秒数。 如果成员没有及时响应,其他成员会将违规成员标记为不可访问。 该设置仅在使用 protocol_version=0 时适用。使用 protocol_version=1 时,相关设置是 settings.election_timeout_millis。 默认值: |
|
存储登录凭据的数据库。 默认值: |
|
运行要登录的 MongoDB 实例的主机。 默认值: |
|
用于身份验证的密码。 当指定 login_user 时,这是必需的。 |
|
要登录的 MongoDB 服务器端口。 默认值: |
|
要登录的 MongoDB 用户。 当指定 login_password 时,这是必需的。 |
|
指定处理副本集重新配置的累积时间限制(以毫秒为单位)。 |
|
由副本集成员组成的 YAML 列表。 也接受 CSV 字符串,例如 mongodb1:27017,mongodb2:27017,mongodb3:27017。 字典也可用于指定高级副本集成员选项。 如果没有提供端口号,则假定为 27017。 |
|
副本集选举协议的版本。 选项
|
|
此功能目前处于实验阶段。请彻底测试您的场景。 请查阅集成测试文件以了解受支持的场景 - \ [集成测试](https://github.com/ansible-collections/community.mongodb/tree/master/tests/integration/targets/mongodb_replicaset/tasks)。\ 查看以 330 开头的文件。 是否执行副本集重新配置操作。 仅当副本集已存在时才相关。 每次调用只能移除或添加一个成员。 重新配置时,成员应全部为字符串或全部为字典。 目前不支持副本集设置文档更改。 选项
|
|
副本集名称。 默认值: |
|
连接数据库时是否使用 SSL 连接。 选项
|
|
ssl_ca_certs 选项接受 CA 文件的路径。 |
|
指定是否需要连接另一端提供证书,以及如果提供是否验证证书。 选项
|
|
使用 ssl_certfile 选项呈现客户端证书。 |
|
ssl_crlfile 选项接受 CRL 文件的路径。 |
|
客户端证书的私钥。 |
|
解密加密私钥的密码。 |
|
对 pymongo 和 MongoDB 软件版本强制执行严格的要求 选项
|
|
对提供的副本集配置执行一些基本验证。 选项
|
备注
注意
远程主机需要 pymongo Python 包,版本 4+。可以使用 pip 或操作系统包管理器安装。@see http://api.mongodb.org/python/current/installation.html
示例
# 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
返回值
常用返回值已在 此处 记录,以下是此模块特有的字段
键 |
描述 |
---|---|
已创建的副本集的名称。 返回值: 成功 |
|
如果发生了副本集重新配置。 返回值: 在副本集重新配置时 |