diff --git a/doc/source/user/quickstart.rst b/doc/source/user/quickstart.rst
index 15dfd261ea2c30b05e5152e73d6fa42f13773f34..14024ca3bf46a14fa39f370ec24e5a3f537449b6 100644
--- a/doc/source/user/quickstart.rst
+++ b/doc/source/user/quickstart.rst
@@ -90,11 +90,12 @@ Install dependencies for the virtual environment
       pip install -U pip
 
 #. Install `Ansible <http://www.ansible.com>`__. Kolla Ansible requires at least
-   Ansible ``6`` and supports up to ``7``.
+   Ansible ``6`` (or ansible-core ``2.14``) and supports up to ``7`` (or
+   ansible-core ``2.15``).
 
    .. code-block:: console
 
-      pip install 'ansible>=6,<8'
+      pip install 'ansible-core>=2.14,<2.16'
 
 
 Install Kolla-ansible
diff --git a/releasenotes/notes/support-ansible-core-81ab88ca37b949cc.yaml b/releasenotes/notes/support-ansible-core-81ab88ca37b949cc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f162511f920d72e1d14aacfce803061127275298
--- /dev/null
+++ b/releasenotes/notes/support-ansible-core-81ab88ca37b949cc.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds support for ansible-core only installation (use ``kolla-ansible
+    install-deps`` to install required collections).
diff --git a/requirements-core.yml b/requirements-core.yml
new file mode 100644
index 0000000000000000000000000000000000000000..aec45a20a94906124ff9479fa7995195a1e7604e
--- /dev/null
+++ b/requirements-core.yml
@@ -0,0 +1,11 @@
+---
+collections:
+  - name: ansible.netcommon
+    source: https://galaxy.ansible.com
+    version: <5
+  - name: ansible.posix
+    source: https://galaxy.ansible.com
+    version: <2
+  - name: community.general
+    source: https://galaxy.ansible.com
+    version: <7
diff --git a/setup.cfg b/setup.cfg
index 7ad076fdfa22289371ace3c0e8a2f55e29145369..e03675ee4324ba922b7c8573f357c68442c9f1fa 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -37,6 +37,7 @@ data_files =
     share/kolla-ansible = tools/init-vpn
     share/kolla-ansible = setup.cfg
     share/kolla-ansible = requirements.yml
+    share/kolla-ansible = requirements-core.yml
 
 scripts =
     tools/kolla-ansible
diff --git a/tests/run.yml b/tests/run.yml
index 843f59cf18d47ebf0f126839e994421859497165..92db8985b4ebd46495a08076a0136ae54f71822d 100644
--- a/tests/run.yml
+++ b/tests/run.yml
@@ -256,15 +256,34 @@
         virtualenv: "{{ kolla_ansible_venv_path }}"
 
     - name: install kolla-ansible and dependencies
+      vars:
+        ansible_core_version_min: "==2.14.*"
+        ansible_core_version_max: "==2.15.*"
+        # Test latest ansible version on Ubuntu, minimum supported on others.
+        ansible_core_version_constraint: >-
+          {{ ansible_core_version_min if is_upgrade or base_distro != 'ubuntu' else ansible_core_version_max }}
       pip:
         extra_args: "-c {{ upper_constraints_file }}"
         name:
           - "{{ kolla_ansible_src_dir }}"
           - "ansible-core{{ ansible_core_version_constraint }}"
-          - "ansible{{ ansible_version_constraint }}"
           - "ara[server]<1.7"
         virtualenv: "{{ kolla_ansible_venv_path }}"
 
+    # TODO(mnasiadka): Remove in Caracal
+    - name: install Ansible on upgrade only
+      vars:
+        ansible_version_min: "==7.*"
+        ansible_version_max: "==8.*"
+        # Test latest ansible version on Ubuntu, minimum supported on others.
+        ansible_version_constraint: >-
+          {{ ansible_version_min if is_upgrade or base_distro != 'ubuntu' else ansible_version_max }}
+      pip:
+        extra_args: "-c {{ upper_constraints_file }}"
+        name: "ansible{{ ansible_version_constraint }}"
+        virtualenv: "{{ kolla_ansible_venv_path }}"
+      when: is_upgrade
+
     - name: install Ansible collections
       shell: |
         source {{ kolla_ansible_venv_path }}/bin/activate
diff --git a/tools/kolla-ansible b/tools/kolla-ansible
index 0fa247da2a5e2c4e80645f5d9e979a098a46abc0..07b43cf6c18a092b45ca85654980dc4fb18c2d23 100755
--- a/tools/kolla-ansible
+++ b/tools/kolla-ansible
@@ -130,7 +130,13 @@ function find_base_dir {
 
 function install_deps {
     echo "Installing Ansible Galaxy dependencies"
-    ansible-galaxy collection install -r ${BASEDIR}/requirements.yml --force
+    if pip show ansible 2>/dev/null; then
+        ansible-galaxy collection install -r ${BASEDIR}/requirements.yml --force
+    else
+        ansible-galaxy collection install -r ${BASEDIR}/requirements.yml --force
+        ansible-galaxy collection install -r ${BASEDIR}/requirements-core.yml --force
+    fi
+
     if [[ $? -ne 0 ]]; then
         echo "ERROR: Failed to install Ansible Galaxy dependencies" >&2
         exit 1