diff --git a/ansible/roles/kolla-ansible/library/kolla_passwords.py b/ansible/roles/kolla-ansible/library/kolla_passwords.py
index d7bc6314caadf15bad786c6f683fccd4c6fb6a52..9b3a215b3d9f1ad1fb86222bf8e5cde00b2bafbe 100644
--- a/ansible/roles/kolla-ansible/library/kolla_passwords.py
+++ b/ansible/roles/kolla-ansible/library/kolla_passwords.py
@@ -57,7 +57,7 @@ def kolla_mergepwd(module, old_path, new_path, final_path):
 def create_vault_password_file(module):
     """Create a vault password file."""
     with tempfile.NamedTemporaryFile(delete=False) as f:
-        f.write(module.params['vault_password'])
+        f.write(module.params['vault_password'].encode())
         return f.name
 
 
diff --git a/tox.ini b/tox.ini
index 3d7cfb9743824559c366dfe39fec19c704c9bf1c..a8519acfa4554af77f9c75e96ccbaaf16e3038b8 100644
--- a/tox.ini
+++ b/tox.ini
@@ -49,10 +49,6 @@ deps =
 commands = {posargs}
 
 [testenv:ansible]
-# FIXME(mgoddard): Ansible playbooks do not yet support Python 3, so we need to run these
-# tests using Python 2 for the time being.
-basepython = python2
-usedevelop = True
 # Create the virtualenv with access to system site packages, as this is
 # required to use the python and apt modules, which are not available via PyPI.
 sitepackages = True
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 3a07b58ee46868bce124857d5db5d93a42c783f6..c081039446c3cb648614cf1f2e8700597961f7e2 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -21,8 +21,6 @@
       tox_envlist: ansible
     required-projects:
       - name: openstack/requirements
-        # TODO(mgoddard): Remove when Ansible playbooks support Python 3.
-        override-checkout: stable/train
     irrelevant-files:
       - ^.*\.rst$
       - ^doc/.*