diff --git a/ansible/roles/kolla-ansible/library/kolla_passwords.py b/ansible/roles/kolla-ansible/library/kolla_passwords.py
index 4b3c0491d2ccfc0012b900329395d2247ade3bf2..733f5e038fed154e8cd65d3ab1e2f1a7692bf952 100644
--- a/ansible/roles/kolla-ansible/library/kolla_passwords.py
+++ b/ansible/roles/kolla-ansible/library/kolla_passwords.py
@@ -76,6 +76,12 @@ def vault_encrypt(module, file_path):
 
 def vault_decrypt(module, file_path):
     """Decrypt a file using Ansible vault"""
+
+    # Return immediately if file not encrypted
+    with open(file_path, 'r') as f:
+        if not f.readline()[:15] == "$ANSIBLE_VAULT;":
+            return
+
     password_path = create_vault_password_file(module)
     try:
         cmd = ["ansible-vault", "decrypt",
diff --git a/releasenotes/notes/fix-unnecessary-decryption-bug-adaf2f6385a77f48.yaml b/releasenotes/notes/fix-unnecessary-decryption-bug-adaf2f6385a77f48.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..70fc5804f788b404cf42e1bd8df638ed514636fb
--- /dev/null
+++ b/releasenotes/notes/fix-unnecessary-decryption-bug-adaf2f6385a77f48.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fixes an error when generating passwords.yml if an unencrypted file exists
+    but a password has been supplied.