diff --git a/playbooks/roles/mirror-update/files/centos-mirror-update b/playbooks/roles/mirror-update/files/centos-mirror-update
index 1f1a13aa35..59ed2e93a7 100755
--- a/playbooks/roles/mirror-update/files/centos-mirror-update
+++ b/playbooks/roles/mirror-update/files/centos-mirror-update
@@ -35,6 +35,30 @@ RSYNC="rsync ${_DRY_RUN} -rltvz"
 BASE="/afs/.openstack.org/mirror/centos"
 K5START="k5start -t -f /etc/centos.keytab service/centos-mirror -- $TIMEOUT"
 
+#
+# -- Centos 9-stream --
+#
+
+# Since CentOS Stream 9, CentOS mirrofs have moved OS repos from basedir centos to centos-stream
+BASE_STREAM="/afs/.openstack.org/mirror/centos-stream"
+
+MIRROR=rsync://dfw.mirror.rackspace.com/centos-stream/9-stream/ # somewhere in US
+
+if ! [ -f ${BASE_STREAM}/9-stream ]; then
+    $K5START mkdir -p ${BASE_STREAM}/9-stream
+fi
+date --iso-8601=ns
+echo "Running Centos 9-stream rsync..."
+$K5START ${RSYNC} \
+    --delete \
+    --delete-excluded \
+    --exclude="iso" \
+    --exclude="debug" \
+    --exclude="s390x" \
+    --exclude="source" \
+    --exclude="ppc64le" \
+    $MIRROR ${BASE_STREAM}/9-stream
+
 #
 # -- Centos 8-stream --
 #