Я написал скрипт на python (и ANSIBLE playbook из-за невозможности заставить скрипт работать, но это уже другая история), цель которого - выполнить переключение внутри набора реплик mongodb, который управляется менеджером ops, версия 3.6. У меня есть два сайта, 3 сервера на одном сайте и 2 сайта на другом, и этот сценарий в основном отправляет запрос PUT, чтобы изменить конфигурацию автоматизации набора реплик и, в зависимости от того, какой сайт предоставлен, изменить приоритет требуемого сервера до 2, оставляя остальные в 1 и добавляя арбитры, затем удаляя их при необходимости. На данный момент цель состоит в том, чтобы просто изменить приоритет с помощью запроса 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.
Когда я пытаюсь это сделать (сценарий запрашивает имя сервера для переключения в качестве аргумента), я получаю:
{"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
Имя_сервера , которое было задано в качестве аргумента , - это то, что оно говорит, а не фактическая цитата "имя_сервера, которое было задано в качестве аргумента".