diff --git a/defaults/main.yml b/defaults/main.yml
index ec7929a410614c80b55c58d0e6f0d119f2ec944d..3f2f49cc4b128f6b6af21af8bfa72d612129db38 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -33,3 +33,7 @@ gitlab_runner_ssh_password: ''
 gitlab_runner_ssh_identity_file: ''
 # Runner Locked
 gitlab_runner_locked: 'false'
+
+# Runner machine
+gitlab_runner_machine_idle_nodes: 0
+gitlab_runner_machine_idle_time: 60
diff --git a/tasks/global-setup.yml b/tasks/global-setup.yml
index 403e175eeec09fe2cd02710d5995ff30f9d668c2..0844ff52c829f1d5bae6c5352495072d493fcf13 100644
--- a/tasks/global-setup.yml
+++ b/tasks/global-setup.yml
@@ -16,4 +16,3 @@
     state: present
     backrefs: yes
   notify: restart_gitlab_runner
-
diff --git a/tasks/main.yml b/tasks/main.yml
index afd14acd65e6e3a1ed54a2fd10c3158e878320bb..271996f829e209cd18da8edb22aa8dec69d2b7f7 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -7,9 +7,9 @@
   import_tasks: install-redhat.yml
   when: ansible_os_family == 'RedHat'
 
-- name: Set global options
-  import_tasks: global-setup.yml
-
 - name: Register GitLab Runner
   import_tasks: register-runner.yml
   when: gitlab_runner_registration_token != ''
+
+- name: Set global options
+  import_tasks: global-setup.yml
diff --git a/tasks/register-runner.yml b/tasks/register-runner.yml
index 04d187f56a8ff87a5967a8303a516f3e76b1efa7..783b78231a9f0fa0a2d8ff199cfcecb805e4f1b5 100644
--- a/tasks/register-runner.yml
+++ b/tasks/register-runner.yml
@@ -30,7 +30,17 @@
     --cache-s3-access-key '{{ gitlab_runner_cache_s3_access_key }}'
     --cache-s3-secret-key '{{ gitlab_runner_cache_s3_secret_key }}'
     --cache-s3-bucket-name '{{ gitlab_runner_cache_s3_bucket_name }}'
-    --cache-s3-insecure '{{ gitlab_runner_cache_s3_insecure }}'
-    --cache-cache-shared '{{ gitlab_runner_cache_cache_shared }}'
+    --cache-s3-insecure='{{ gitlab_runner_cache_s3_insecure }}'
+    --cache-cache-shared='{{ gitlab_runner_cache_cache_shared }}'
     {% endif %}
+    --machine-idle-nodes '{{ gitlab_runner_machine_idle_nodes }}'
+    --machine-idle-time '{{ gitlab_runner_machine_idle_time }}'
+    --machine-machine-driver 'digitalocean'
+    --machine-machine-name 'gitlab-runner-autoscale-%s'
+    --machine-machine-options 'digitalocean-image=coreos-stable'
+    --machine-machine-options 'digitalocean-ssh-user=core'
+    --machine-machine-options 'digitalocean-access-token={{ gitlab_runner_digital_ocean_token }}'
+    --machine-machine-options 'digitalocean-region={{ gitlab_runner_digital_ocean_region }}'
+    --machine-machine-options 'digitalocean-size={{ gitlab_runner_digital_ocean_size }}'
+    --machine-machine-options 'digitalocean-private-networking'
   when: configured_runners.stderr.find('\n' + gitlab_runner_description) == -1