diff --git a/ansible/roles/prechecks/vars/main.yml b/ansible/roles/prechecks/vars/main.yml
index 558696e05b5b1b1d580dd7f39146cfb96be4377b..4d5d65d0b9f60b2b1c8dc27300647d33698fb418 100644
--- a/ansible/roles/prechecks/vars/main.yml
+++ b/ansible/roles/prechecks/vars/main.yml
@@ -1,7 +1,7 @@
 ---
 docker_version_min: '1.10.0'
 docker_py_version_min: '2.0.0'
-ansible_version_min: '2.8'
+ansible_version_min: '2.9'
 ansible_version_max: '2.9'
 
 # Top level keys should match ansible_distribution.
diff --git a/doc/source/user/quickstart.rst b/doc/source/user/quickstart.rst
index da1b5447d76608cd0b58ea1bff202f71874fab12..49427fd0a808d54e66d2385f5569a8d1ddb799c9 100644
--- a/doc/source/user/quickstart.rst
+++ b/doc/source/user/quickstart.rst
@@ -79,7 +79,7 @@ If not installing Kolla Ansible in a virtual environment, skip this section.
       pip install -U pip
 
 #. Install `Ansible <http://www.ansible.com>`__. Kolla Ansible requires at least
-   Ansible ``2.8`` and supports up to ``2.9``.
+   Ansible ``2.9`` and supports up to ``2.9``.
 
    .. code-block:: console
 
diff --git a/lower-constraints.txt b/lower-constraints.txt
index 76872191c942be18e6b045bee6532ae4d4b6c239..33616303ce1ef2f4edfddab70284875ddd3b57b6 100644
--- a/lower-constraints.txt
+++ b/lower-constraints.txt
@@ -1,5 +1,5 @@
 alabaster==0.7.10
-ansible==2.8.0
+ansible==2.9.0
 appdirs==1.4.3
 asn1crypto==0.24.0
 Babel==2.5.3
diff --git a/releasenotes/notes/require-ansible-29-f03f4e22292a5bb4.yaml b/releasenotes/notes/require-ansible-29-f03f4e22292a5bb4.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a6e09d7df248fdf24d2190eb488ea56bc5f3a0c0
--- /dev/null
+++ b/releasenotes/notes/require-ansible-29-f03f4e22292a5bb4.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    Kolla-Ansible now requires Ansible ``2.9``. Ansible ``2.8`` is not
+    supported anymore.
diff --git a/test-requirements.txt b/test-requirements.txt
index 28dcb69dda820c96d76d02cb2500a34e703c6e85..f960fd505a858d129a202f7b4fdb8c4dca4d4db3 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -13,4 +13,4 @@ coverage!=4.4,>=4.0 # Apache-2.0
 docker>=2.4.2 # Apache-2.0
 oslotest>=3.2.0 # Apache-2.0
 stestr>=2.0.0 # Apache-2.0
-ansible>=2.8.0 # GPLv3
+ansible>=2.9.0 # GPLv3
diff --git a/tests/run.yml b/tests/run.yml
index f59701078e51eef0283f6f08b80072255c8fce28..032262a4421f3d4bf4cde05de19a0ab5dbca7576 100644
--- a/tests/run.yml
+++ b/tests/run.yml
@@ -197,7 +197,7 @@
     - name: install kolla-ansible and dependencies
       vars:
         # Test latest ansible version on Ubuntu, minimum supported on others.
-        ansible_version_constraint: "{{ '==2.9.*,!=2.9.8,!=2.9.12' if base_distro == 'ubuntu' else '==2.8.*,!=2.8.14' }}"
+        ansible_version_constraint: "==2.9.*"
       pip:
         name:
           - "{{ kolla_ansible_src_dir }}"
diff --git a/tools/kolla-ansible b/tools/kolla-ansible
index 2d01cf62a62cdb56276f3ae2cdceb32552705e8b..9d8ba9e137374035e47eb98859b36f9bedd462ef 100755
--- a/tools/kolla-ansible
+++ b/tools/kolla-ansible
@@ -54,7 +54,7 @@ function check_environment_coherence {
         exit 1
     fi
 
-    local ANSIBLE_VERSION_MIN=2.8
+    local ANSIBLE_VERSION_MIN=2.9
     local ANSIBLE_VERSION_MAX=2.9
 
     if [[ $(printf "%s\n" "$ANSIBLE_VERSION_MIN" "$ANSIBLE_VERSION_MAX" "$ansible_version" | sort -V | head -n1) != "$ANSIBLE_VERSION_MIN" ]] ||