pgkehle.mongodb
Ansible角色 - mongodb
配置MongoDB集群的组件
在Ansible Galaxy上可用:isaackehle.mongodb
变量
所需的定义如下:
cfg_server:
name: "my-cfg" #(必需)
group: "my-cfg-servers" #(必需) 始终传入用于配置服务器的组ID
replica_set:
name: "my-cfg" # 配置服务器的副本集名称(fqdn前缀)
group: "my-cfg-servers" # 副本集中所有服务器的组名称
主机定义通常包含以下内容:
仅限副本集
cluster_role: "replicaSet"
路由服务器
cluster_role: "router"
配置服务器
cluster_role: "config"
replica_set:
name: "my-cfg" # 配置服务器的副本集名称(fqdn前缀)
group: "my-cfg-servers" # 副本集中所有服务器的组名称
分片服务器
cluster_role: "shard"
replica_set:
name: "db-data" # 分片服务器的副本集名称(fqdn前缀)
group: "db-data-servers" # 副本集中所有服务器的组名称
标签/标志
我使用一种标志和标签系统,使调用的剧本能够指定运行哪些角色。 例如:
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['install']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['save_config']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['reset_storage']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['init_replica_set']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['add_shard_to_cluster']}"
ansible-playbook playbooks/mongodb.yml -e "{'flags': ['create_database']}"
标志和变量
标志 | 目的 |
---|---|
install | 安装MongoDB软件包 |
save_config | 基本初始化。停止服务,推送服务/配置文件,重启服务 |
reset_storage | 清空目录和日志 |
init_replica_set | 初始化副本集配置 |
add_shard_to_cluster | 将分片服务器的副本集添加到分片服务器集群中 |
create_database | 执行初始数据库创建,包含用户名和密码 |
vars:
flags: ["install"]
new_shard:
name: #要添加到配置服务器的副本集名称
server: #要添加的新副本集的成员之一
示例
- hosts: all
vars:
auth_db: ""
adminUser: ""
adminPass: ""
tgt_db: ""
userName: ""
userPass: ""
roles: ["readWrite", "userAdmin"]
# 初始化副本集时使用
adminUser: ''
adminPass: ''
roles:
- { role: isaackehle.mongodb, flags: ['install'] }
- { role: isaackehle.mongodb, flags: ['save_config'] }
- { role: isaackehle.mongodb, flags: ['reset_storage'] }
- { role: isaackehle.mongodb, flags: ['init_replica_set'] }
- { role: isaackehle.mongodb, flags: ['add_shard_to_cluster'] }
- { role: isaackehle.mongodb, flags: ['create_database'] }
代码检查
yamllint -c yamllint.yaml .
ansible-lint .
许可证
MIT
作者信息
Isaac Kehle @isaackehle (twitter,github,linkedin)
参考资料
MongoDB
Digital Ocean