2

我们正在 AWS EC2 实例上通过 ansible 部署 mongodb 集群。配置数据库实例后,我们为其提供相应的主要/次要标签。我们有 3 个节点 - 1 个用于主节点,2 个用于辅助节点。

第一次运行 ansible 脚本时,我们按标签类型选择主实例,启动它并向其添加辅助节点

rs.initiate()
rs.add(secodnaryHost1)
rs.add(secondaryHost2)

这工作正常。

然而有时,当一个从属节点成为主节点时,我们的实例标签类型——主节点和 mongoDB——主节点并不相同。在这种情况下,如果我们运行我们的 ansible 脚本,它们会失败,因为主要标签类型(现在是次要标签类型)无法在命令之上运行。

处理这种不匹配的最佳方法是什么?

4

1 回答 1

2

您应该阅读当前状态并在模板中或通过命令行定义适当的设置。请搜索可用的 ansible-galaxy 角色

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
于 2016-04-20T17:35:19.797 回答