1

ops manager バージョン 3.6 によって管理される mongodb レプリカ セット内でスイッチオーバーを実行することを目的とした Python スクリプト (およびスクリプトを機能させることができないため、それは別の話ですが、それは別の話です) を作成しました。1 つのサイトに 3 つのサーバー、もう 1 つのサイトに 2 つのサイトの 2 つのサイトがあり、そのスクリプトが基本的に行うことは、PUT 要求を送信してレプリカ セットの自動化構成を編集し、指定されたサイトに応じて必要なサーバーの優先度を変更することです。残りを 1 のままにしてアービタを追加し、必要に応じてそれらを削除しながら、2 にします。ここでの目的は、put リクエストで優先度を変更して動作させることです。PUT リクエストは次のようになります。

data = {"replicaSets": [
{
     "_id"_: "PP_ATLAS",
     "members": [
          {
               "_id": 2,
              "host": "*servername*",
              "priority": 2,
          },
          {
              "_id": 3,
              "host": "*servername*",
          },
          {
              "_id": 4,
              "host": "*servername*",
          }
     ]
   }
],
}
headers = {'Content-Type': 'application/json'}
js = requests.put(url, auth=HTTPDigestAuth (MMS_User, MMS_API), data=json.dumps(data), headers=headers, verify=False)

MMS_User と MMS_API は、MMS とも呼ばれる ops マネージャーにアクセスするために使用される識別トークンです。

これを試みると (スクリプトは、切り替え先のサーバー名を引数として要求します)、次のメッセージが表示されます。

{"detail":"Invalid automation config: Process *servername that was given as an argument* referenced in one or more deployment items but not found in configuration.","error":400,"errorCode":null,"parameters":null,"reason":"Bad Request"}
400

引数として指定されたサーバー名は、実際の引用符「引数として指定されたサーバー名」ではなく、それが示すものです。

4

0 に答える 0