diff --git a/tests/run.yml b/tests/run.yml
index 8004ba00c0..dafc9cdce7 100644
--- a/tests/run.yml
+++ b/tests/run.yml
@@ -11,6 +11,8 @@
       vars:
         # NOTE(yoctozepto): needed here to use in other facts too
         openstack_core_enabled: "{{ scenario not in ['bifrost', 'mariadb'] }}"
+        # TODO(mgoddard): Remove when previous_release is ussuri.
+        is_centos8: "{{ ansible_os_family == 'RedHat' and ansible_distribution_major_version | int == 8 }}"
       set_fact:
         kolla_inventory_path: "/etc/kolla/inventory"
         logs_dir: "/tmp/logs"
@@ -24,7 +26,7 @@
         openstack_core_tested: "{{ scenario in ['core', 'ceph-ansible', 'zun', 'cells', 'swift', 'linuxbridge'] }}"
         dashboard_enabled: "{{ openstack_core_enabled }}"
         # TODO(mgoddard): Remove when previous_release is ussuri.
-        playbook_python_version: "{{ '2' if is_upgrade and previous_release == 'train' else '3' }}"
+        playbook_python_version: "{{ '2' if is_upgrade and previous_release == 'train' and not is_centos8 else '3' }}"
 
     - name: Install xfsprogs package for Swift filesystems
       become: true
@@ -498,6 +500,7 @@
                 executable: pip2
                 state: absent
               become: true
+              when: playbook_python_version == '2'
 
             - name: install ansible and ARA for python 3
               vars:
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index daedec80c1..57092c6894 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -140,6 +140,16 @@
       install_type: source
       is_upgrade: yes
 
+- job:
+    name: kolla-ansible-centos8-source-upgrade
+    parent: kolla-ansible-base
+    nodeset: kolla-ansible-centos8
+    timeout: 9000
+    vars:
+      base_distro: centos
+      install_type: source
+      is_upgrade: yes
+
 - job:
     name: kolla-ansible-ubuntu-source-upgrade
     parent: kolla-ansible-base
diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml
index 7749d5e789..5f714f15aa 100644
--- a/zuul.d/project.yaml
+++ b/zuul.d/project.yaml
@@ -36,6 +36,7 @@
         - kolla-ansible-centos8-binary-ironic
         - kolla-ansible-ubuntu-source-ironic
         - kolla-ansible-centos-source-upgrade
+        - kolla-ansible-centos8-source-upgrade
         - kolla-ansible-ubuntu-source-upgrade
         - kolla-ansible-centos-binary
         - kolla-ansible-centos8-binary