diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 092d212fa7ac353c868e9f6984576b2f36eea907..e52aa2934bdaedf817ffbf049888195aa41a944d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -149,6 +149,11 @@ deploy_http_proxy_node:
       cat > user_data.txt <<EOF
       #!/bin/bash
       echo "$DEV_KEY" >> /root/.ssh/authorized_keys
+      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 ansible.log
+      rm -rf /tmp/${CI_PROJECT_NAME}
       EOF
     - >
       export HTTP_PROXY_INSTANCE_ID=$(openstack server create
@@ -185,6 +190,11 @@ deploy_ssh_proxy_node:
       cat > user_data.txt <<EOF
       #!/bin/bash
       echo "$DEV_KEY" >> /root/.ssh/authorized_keys
+      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 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