我们正在AWS EC2实例上通过ansible部署mongodb集群。 配置数据库实例后,我们会为主要/辅助提供相应的标记。我们有3个节点 - 1个用于主节点,2个用于辅助节点。
在第一次运行ansible脚本时,我们按标签类型选择主要实例,启动它并向其添加辅助节点
rs.initiate()
rs.add(secodnaryHost1)
rs.add(secondaryHost2)
这很好用。
但有时,当其中一个辅助服务器成为主服务器时,我们的实例Tag类型 - primary和mongoDB - primary不同。 在这种情况下,如果我们运行我们的ansible脚本,它们会失败,因为主标记类型(现在是次要标记)不能在命令之上运行。
处理此类不匹配的最佳方法是什么?
答案 0 :(得分:2)
您应该阅读the current status并在模板中或通过命令行定义适当的设置。 请在available ansible-galaxy roles中搜索。
PS:
示例模板repset_init.j2及其提供
- name: Create the file to initialize the mongod replica set
template: src=repset_init.j2 dest=/tmp/repset_init.js
- name: Pause for a while
pause: seconds=20
- name: Initialize the replication set
shell: /usr/bin/mongo --port "{{ mongod_port }}" /tmp/repset_init.js