diff --git a/releasenotes/notes/add-forks-flag-faf0d27618265bd4.yaml b/releasenotes/notes/add-forks-flag-faf0d27618265bd4.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4e891ac905a690ed2edc4569b1eb859b9e8053cf
--- /dev/null
+++ b/releasenotes/notes/add-forks-flag-faf0d27618265bd4.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Adds a new argument to the ``kolla-ansible`` command, ``--forks NUM``.
+    This argument is passed through directly to ``ansible-playbook``.
diff --git a/tools/kolla-ansible b/tools/kolla-ansible
index eb29e7b3ef0d0d0b3a2e0a307042cc255663835c..86dac7418cfaf0547bf38de9132ef7436560ca21 100755
--- a/tools/kolla-ansible
+++ b/tools/kolla-ansible
@@ -44,6 +44,7 @@ Options:
     --extra, -e <ansible variables>    Set additional variables as key=value or YAML/JSON passed to ansible-playbook
     --passwords <passwords_path>       Specify path to the passwords file
     --limit <host>                     Specify host to run plays
+    --forks <forks>                    Number of forks to run Ansible with
     --vault-id <@prompt or path>       Specify @prompt or password file (Ansible >=  2.4)
     --ask-vault-pass                   Ask for vault password
     --vault-password-file <path>       Specify password file for vault decrypt
@@ -82,6 +83,7 @@ cat <<EOF
 --extra -e
 --passwords
 --limit
+--forks
 --vault-id
 --ask-vault-pass
 --vault-password-file
@@ -105,7 +107,7 @@ EOF
 }
 
 SHORT_OPTS="hi:p:t:k:e:v"
-LONG_OPTS="help,inventory:,playbook:,skip-tags:,tags:,key:,extra:,verbose,configdir:,passwords:,limit:,vault-id:,ask-vault-pass,vault-password-file:,yes-i-really-really-mean-it,include-images,include-dev"
+LONG_OPTS="help,inventory:,playbook:,skip-tags:,tags:,key:,extra:,verbose,configdir:,passwords:,limit:,forks:,vault-id:,ask-vault-pass,vault-password-file:,yes-i-really-really-mean-it,include-images,include-dev"
 
 RAW_ARGS="$*"
 ARGS=$(getopt -o "${SHORT_OPTS}" -l "${LONG_OPTS}" --name "$0" -- "$@") || { usage >&2; exit 2; }
@@ -199,6 +201,11 @@ while [ "$#" -gt 0 ]; do
             shift 2
             ;;
 
+    (--forks)
+            EXTRA_OPTS="$EXTRA_OPTS --forks $2"
+            shift 2
+            ;;
+
     (--vault-id)
             EXTRA_OPTS="$EXTRA_OPTS --vault-id $2"
             shift 2