diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c34d7006e930fd7afe2e057b123a470401a31a84..046c0dcc35848dca5c44236f269a23e00df05924 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -149,7 +149,11 @@ deploy_http_proxy_node:
       cat > user_data.txt <<EOF
       #!/bin/bash
       echo "$DEV_KEY" >> /root/.ssh/authorized_keys
-      ansible-playbook -i localhost, -c local ansible/cheaha.yml
+      git clone ${CI_REPOSITORY_URL} /tmp/${CI_PROJECT_NAME}
+      cd /tmp/${CI_PROJECT_NAME}
+      git checkout ${CI_COMMIT_REF_NAME}
+      ansible-playbook -c local -i 127.0.0.1, ansible/cheaha.yml | tee -a /tmp/ansible.log
+      rm -rf /tmp/${CI_PROJECT_NAME}
       EOF
     - >
       export HTTP_PROXY_INSTANCE_ID=$(openstack server create
@@ -186,7 +190,11 @@ deploy_ssh_proxy_node:
       cat > user_data.txt <<EOF
       #!/bin/bash
       echo "$DEV_KEY" >> /root/.ssh/authorized_keys
-      ansible-playbook -i localhost, -c local ansible/cheaha.yml
+      git clone ${CI_REPOSITORY_URL} /tmp/${CI_PROJECT_NAME}
+      cd /tmp/${CI_PROJECT_NAME}
+      git checkout ${CI_COMMIT_REF_NAME}
+      ansible-playbook -c local -i 127.0.0.1, ansible/cheaha.yml | tee -a /tmp/ansible.log
+      rm -rf /tmp/${CI_PROJECT_NAME}
       EOF
     - >
       export SSH_PROXY_INSTANCE_ID=$(openstack server create
diff --git a/ansible/roles/cheaha.node/tasks/main.yml b/ansible/roles/cheaha.node/tasks/main.yml
index c5a171f72c658838a15b4115aef863ec157a62cf..12f098d0841e7562af1cb11d8b77a14ab6a9ac97 100644
--- a/ansible/roles/cheaha.node/tasks/main.yml
+++ b/ansible/roles/cheaha.node/tasks/main.yml
@@ -34,3 +34,7 @@
 - name: Set timezone to America/Chicago
   community.general.timezone:
     name: America/Chicago
+  retries: 3
+  delay: 3
+  register: result
+  until: not result.failed