
Intento actualizar mongodb en mi contenedor acoplable de 3.6 a 4.2 usando ansible, pero el contenedor acoplable sigue reiniciándose.
La razón por la que se reinicia es porque el nivel de compatibilidad está establecido en 3.6.
Más específicamente:
IMPORTANT: UPGRADE PROBLEM: Found an invalid featureCompatibilityVersion document(ERROR: BadValue: Invalid value for version, found 3.6, expected '4.2' or '4.0'. Contents of featureCompatibilityVersion document in admin.system.version: { _id: "featureCompatibilityVersion", version: "3.6" }. See http://dochub.mongodb.org/core/4.0-feature-compatibility.). If the current featureCompatibilityVersion is below 4.0, see the documentation on upgrading at http://dochub.mongodb.org/core/4.0-upgrade-fcv.
¿Cómo actualizar este documento?
Intenté ejecutar un comando ansible posterior a la compilación (llamémoslo así), que se ve así:
- name: set compatibility level
state: started
shell: "docker exec mongodb-primary bash -c 'mongo --eval \"db.adminCommand( { setFeatureCompatibilityVersion: \"4.2\" } )\"'"
become: True
become_user: root
register: result
Además de probar muchas otras opciones, todas sin esperanza.
Y este script ansible está fallando porque no puede conectarse a mongo. La conexión es rechazada, dice. Supongo que Mongo aún no está activo.
Entonces, ¿cómo actualizar mongo en el contenedor Docker de 3.6 a 4.2? Usando ansible y docker-compose.
Respuesta1
Se resolvió este problema actualizando a 4.0, luego configurando featureCompatibilityVersion en 4.0, luego actualizando nuevamente a 4.2, luego configurando featureCompatibilityVersion en 4.2
Respuesta2
Sí, con MongoDB no puedes saltar de la 3.6 a la 4.2 en una actualización, tienes que pasar a la siguiente versión, y así sucesivamente hasta conseguir la versión que necesitas.