I am setting up the OpenStack system on two identical VPSs using Ubuntu 20.04 LTS with Kolla-ansible. After installing the necessary dependencies, I ran a deployment check by executing "sudo kolla-ansible -i inventory bootstrap-servers". The command was successful and returned an acceptable result, as shown below:
Bootstrapping servers : ansible-playbook -i inventory -e @/etc/kolla/globals.yml  -e @/etc/kolla/passwords.yml -e CONFIG_DIR=/etc/kolla  -e kolla_action=bootstrap-servers /usr/local/share/kolla-ansible/ansible/kolla-host.yml 
PLAY [Gather facts for all hosts] *****************************************************
TASK [Gather facts] *******************************************************************
ok: [compute-storage-node]
ok: [control-node]
TASK [Group hosts to determine when using --limit] ************************************
ok: [control-node]
ok: [compute-storage-node]
[WARNING]: Could not match supplied host pattern, ignoring: all_using_limit_True
PLAY [Gather facts for all hosts (if using --limit)] **********************************
skipping: no hosts matched
[WARNING]: Could not match supplied host pattern, ignoring: baremetal
PLAY [Apply role baremetal] ***********************************************************
skipping: no hosts matched
PLAY RECAP ****************************************************************************
compute-storage-node       : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
control-node               : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
Afterward, I ran the command sudo kolla-ansible -i inventory prechecks and encountered an error. The complete output is quite lengthy, but the relevant section is provided below:
TASK [prechecks : Get container facts] ********************************************************************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ModuleNotFoundError: No module named 'docker'
fatal: [compute-storage-node]: FAILED! => {"changed": false, "module_stderr": "Shared connection to compute-storage-node closed.\r\n", "module_stdout": "Traceback (most recent call last):\r\n  File \"/home/ubuntu/.ansible/tmp/ansible-tmp-1683188154.6469145-5240-89001723359825/AnsiballZ_kolla_container_facts.py\", line 102, in <module>\r\n    _ansiballz_main()\r\n  File \"/home/ubuntu/.ansible/tmp/ansible-tmp-1683188154.6469145-5240-89001723359825/AnsiballZ_kolla_container_facts.py\", line 94, in _ansiballz_main\r\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n  File \"/home/ubuntu/.ansible/tmp/ansible-tmp-1683188154.6469145-5240-89001723359825/AnsiballZ_kolla_container_facts.py\", line 40, in invoke_module\r\n    runpy.run_module(mod_name='ansible.modules.kolla_container_facts', init_globals=None, run_name='__main__', alter_sys=True)\r\n  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module\r\n    return _run_module_code(code, init_globals, run_name, mod_spec)\r\n  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code\r\n    _run_code(code, mod_globals, init_globals,\r\n  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\r\n    exec(code, run_globals)\r\n  File \"/tmp/ansible_kolla_container_facts_payload_08qe7wec/ansible_kolla_container_facts_payload.zip/ansible/modules/kolla_container_facts.py\", line 18, in <module>\r\nModuleNotFoundError: No module named 'docker'\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ModuleNotFoundError: No module named 'docker'
fatal: [control-node]: FAILED! => {"changed": false, "module_stderr": "Shared connection to control-node closed.\r\n", "module_stdout": "Traceback (most recent call last):\r\n  File \"/home/ubuntu/.ansible/tmp/ansible-tmp-1683188154.625407-5238-274995332860437/AnsiballZ_kolla_container_facts.py\", line 102, in <module>\r\n    _ansiballz_main()\r\n  File \"/home/ubuntu/.ansible/tmp/ansible-tmp-1683188154.625407-5238-274995332860437/AnsiballZ_kolla_container_facts.py\", line 94, in _ansiballz_main\r\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\r\n  File \"/home/ubuntu/.ansible/tmp/ansible-tmp-1683188154.625407-5238-274995332860437/AnsiballZ_kolla_container_facts.py\", line 40, in invoke_module\r\n    runpy.run_module(mod_name='ansible.modules.kolla_container_facts', init_globals=None, run_name='__main__', alter_sys=True)\r\n  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module\r\n    return _run_module_code(code, init_globals, run_name, mod_spec)\r\n  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code\r\n    _run_code(code, mod_globals, init_globals,\r\n  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\r\n    exec(code, run_globals)\r\n  File \"/tmp/ansible_kolla_container_facts_payload_fph30x3h/ansible_kolla_container_facts_payload.zip/ansible/modules/kolla_container_facts.py\", line 18, in <module>\r\nModuleNotFoundError: No module named 'docker'\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
PLAY RECAP ************************************************************************************************************************************************************************************************************
compute-storage-node       : ok=6    changed=0    unreachable=0    failed=1    skipped=4    rescued=0    ignored=0   
control-node               : ok=6    changed=0    unreachable=0    failed=1    skipped=4    rescued=0    ignored=0   
Command failed ansible-playbook -i inventory -e @/etc/kolla/globals.yml  -e @/etc/kolla/passwords.yml -e CONFIG_DIR=/etc/kolla  -e kolla_action=precheck /usr/local/share/kolla-ansible/ansible/site.yml 
I have checked the both nodes, and I'm sure docker and 'docker' lib has been installed.
python3 -c "import docker; print(docker.__version__)"
6.0.1
And I have checked the python path of ansible.
ansible localhost -m setup -a 'filter=ansible_python'
[WARNING]: No inventory was parsed, only implicit localhost is available
localhost | SUCCESS => {
    "ansible_facts": {
        "ansible_python": {
            "executable": "/usr/bin/python3",
            "has_sslcontext": true,
            "type": "cpython",
            "version": {
                "major": 3,
                "micro": 10,
                "minor": 8,
                "releaselevel": "final",
                "serial": 0
            },
            "version_info": [
                3,
                8,
                10,
                "final",
                0
            ]
        }
    },
    "changed": false
}
I am currently very confused about what exactly happened. It is truly an emergency.