0

私は、mongoで複製されたセットへのノードの追加を自動化しています。

$ mongo IP.Of.Server.One
> rs.initiate();
> rs.add("IP.Of.Server.Two");
> rs.add("IP.Of.Server.Three");
> rs.status();

新しいノードが起動したときに、paramikoを使用して既存のノードにSSHで接続することにより、そのIPアドレスをセット内の既存のノードに追加するPythonスクリプトがあります。

mongoシェルに入らずに、コマンドラインから自動化するにはどうすればよいですか。私はpexpectを使用できますが、ベースとシェルの使用により1つのライナーを好みます。

ありがとう

4

1 に答える 1

2

--evalコマンドラインオプションを使用しrs.add()て、レプリカセットのプライマリにJavaScriptコマンドを渡すことができます。rs.add()呼び出しをラップするとprintjson()、Pythonスクリプトが解析できる結果がstdoutにエコーされます。

したがって、プライマリが次のnode1.replsetように新しいノードを追加できると仮定しますnode4.replset

mongo --eval "printjson(rs.add('node4.replset:27017'))" node1.replset:27017
于 2012-11-08T05:25:40.747 に答える