Ansible を使用して mongodb replicaset docker コンテナをアップグレードする

Ansible を使用して mongodb replicaset docker コンテナをアップグレードする

Ansible を使用して Docker コンテナ内の mongodb を 3.6 から 4.2 に更新しようとしていますが、Docker コンテナが再起動し続けます。
再起動する理由は、互換性レベルが 3.6 に設定されているためです。
具体的には、次のようになります。

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.

このドキュメントを更新するにはどうすればいいでしょうか?
次のような Ansible post-build コマンド (このように呼びます) を実行しようとしました。

  - 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

他にもたくさんのオプションを試しましたが、どれも望みがありませんでした。
そして、この Ansible スクリプトは mongo に接続できないため失敗しています。接続が拒否されたと表示されます。つまり、mongo はまだ起動していないのだと思います。

では、docker コンテナ内の mongo を 3.6 から 4.2 に実際にアップグレードするにはどうすればよいでしょうか。ansible と docker-compose を使用します。

答え1

この問題は、4.0 にアップグレードし、featureCompatibilityVersion を 4.0 に設定し、再度 4.2 にアップグレードし、featureCompatibilityVersion を 4.2 に設定することで解決しました。

答え2

はい、MongoDB では、1 回の更新で 3.6 から 4.2 にジャンプすることはできません。必要なバージョンが得られるまで、次のバージョンに進む必要があります。

関連情報