diff --git a/deploy.sh b/deploy.sh
index 1b4d178ffb9b679990b78acf1f45510785f5cf52..22b1cba8442394e7f359ac0ccd4f89640dcefb63 100755
--- a/deploy.sh
+++ b/deploy.sh
@@ -1,2 +1,3 @@
+#!/bin/sh
 #ansible-galaxy collection install community.general
 ansible-playbook playbook.yml -i inventory/inventory $@
diff --git a/inventory/inventory b/inventory/inventory
index 49d8a9ddbd2426386876f4a843070bcdb49b2cf0..a09de803890cea5eaaee4744ec16e7f5bd0ff384 100644
--- a/inventory/inventory
+++ b/inventory/inventory
@@ -1,4 +1,6 @@
 # Inventory Aliases
+local           ansible_connection=local
+
 # Make sure to change group_vars/all.yml for the same hosts keys
 et2             ansible_host=et2.gndev.hexaa.eu ansible_user=ansible ansible_ssh_private_key_file=.ssh/id_ansible
 mdxcdn          ansible_host=mdxcdn.pt-38.utr.surfcloud.nl ansible_user=ansible ansible_ssh_private_key_file=.ssh/id_ansible
@@ -20,6 +22,7 @@ okeanos
 
 # Hosts that receive the GeoDNS role
 [geodns]
+local
 et2
 mdxcdn
 
diff --git a/roles/geodns/defaults/main.yml b/roles/geodns/defaults/main.yml
index 3e4b6044db1c1cad2908df73b603541bf29cf806..291d8ef061e09e302d734e61d47e2f713e207c16 100644
--- a/roles/geodns/defaults/main.yml
+++ b/roles/geodns/defaults/main.yml
@@ -4,7 +4,11 @@ go_link: https://go.dev/dl/go1.16.13.linux-amd64.tar.gz
 
 geodns_repo: https://github.com/abh/geodns.git
 geodns_dir: /opt/geodns
-geo_dns_version: v3.2.0
-geo_dns_config: "{{ geodns_dir}}/config"
+geodns_version: v3.2.0
+geodns_config: "{{ geodns_dir}}/config"
 
 geolite_dir: "{{ geodns_dir }}/GeoLite2DB"
+
+mdxsaas_repo: https://gitlab.geant.org/TI_Incubator/mdx-saas-config.git
+mdxsaas_dir: /opt/mdx-saas
+mdxsaas_version: main
diff --git a/roles/geodns/handlers/main.yml b/roles/geodns/handlers/main.yml
index 0b00ab4393438d0b80f1d1a39b6f611e20e8b438..676bcc73c1cb749d1707a4d868fa4b3622eac5ed 100644
--- a/roles/geodns/handlers/main.yml
+++ b/roles/geodns/handlers/main.yml
@@ -9,3 +9,5 @@
     - geodns.service
     - geodns-config.service
     - geodns-config.timer
+    - geodns-update.service
+    - geodns-update.timer
diff --git a/roles/geodns/tasks/main.yml b/roles/geodns/tasks/main.yml
index ce0ec6e684023a0e1e1938b9b75c5f62e3b593db..08cf9fc2f31ff0204ebcf25ace77c3aab6ab5ad7 100644
--- a/roles/geodns/tasks/main.yml
+++ b/roles/geodns/tasks/main.yml
@@ -1,4 +1,10 @@
 ---
+- name: Install packages
+  apt:
+    state: present
+    name:
+      - ansible
+      - netcat-openbsd
 
 - name: Check if go binary exists
   stat:
@@ -16,7 +22,7 @@
   ansible.builtin.git:
     repo: "{{ geodns_repo }}"
     dest: "{{ geodns_dir }}"
-    version: "{{ geo_dns_version }}"
+    version: "{{ geodns_version }}"
   register: geodns_git
 
 - name: Check if geodns binary exists
@@ -38,13 +44,13 @@
     state: directory
     mode: '0755'
   with_items:
-    - "{{ geo_dns_config }}"
+    - "{{ geodns_config }}"
     - "{{ geolite_dir }}"
 
 - name: Copy geoDNS config
   ansible.builtin.copy:
     src: "{{ tld }}.yaml"
-    dest: "{{ geo_dns_config }}/{{ tld }}.yaml"
+    dest: "{{ geodns_config }}/{{ tld }}.yaml"
     mode: '0644'
   notify:
     - "enable geodns job"
@@ -52,7 +58,7 @@
 - name: Copy geoDNS config parser
   ansible.builtin.copy:
     src: "geoconfig.py"
-    dest: "{{ geo_dns_config }}/geoconfig.py"
+    dest: "{{ geodns_config }}/geoconfig.py"
     mode: '0755'
   notify:
     - "enable geodns job"
@@ -70,14 +76,14 @@
 - name: Create geoDNS config
   ansible.builtin.template:
     src: "geodns.conf.j2"
-    dest: "{{ geo_dns_config }}/geodns.conf"
+    dest: "{{ geodns_config }}/geodns.conf"
   notify:
     - "enable geodns job"
 
 - name: Run GeoDns config job once
   ansible.builtin.command:
     cmd: "/opt/geodns/config/geoconfig.py {{ tld }}"
-    chdir: "{{ geo_dns_config }}"
+    chdir: "{{ geodns_config }}"
 
 - name: Copy geoDNS service files
   ansible.builtin.template:
@@ -87,5 +93,16 @@
     - geodns.service
     - geodns-config.service
     - geodns-config.timer
+    - geodns-update.service
+    - geodns-update.timer
   notify:
     - "enable geodns job"
+
+- name: Clone MDX-SAAS-config repository
+  ansible.builtin.git:
+    repo: "{{ mdxsaas_repo }}"
+    dest: "{{ mdxsaas_dir }}"
+    version: "{{ mdxsaas_version }}"
+  register: mdxsaas_git
+
+
diff --git a/roles/geodns/templates/geodns-config.service.j2 b/roles/geodns/templates/geodns-config.service.j2
index dd988705ab9cc313ac93099b4dca7a626a7154b7..f74f86965ce67e342effc716b0c7241078cf08e4 100644
--- a/roles/geodns/templates/geodns-config.service.j2
+++ b/roles/geodns/templates/geodns-config.service.j2
@@ -3,8 +3,8 @@ Description=GeoDNS config
 
 [Service]
 Type=oneshot
-WorkingDirectory={{ geo_dns_config }}
-ExecStart={{ geo_dns_config }}/geoconfig.py {{ tld }}
+WorkingDirectory={{ geodns_config }}
+ExecStart={{ geodns_config }}/geoconfig.py {{ tld }}
 ExecStartPost=/bin/systemctl restart geodns
 
 [Install]
diff --git a/roles/geodns/templates/geodns-update.service.j2 b/roles/geodns/templates/geodns-update.service.j2
new file mode 100644
index 0000000000000000000000000000000000000000..748012fe0e32b42a06f8ff11d35563d24848606f
--- /dev/null
+++ b/roles/geodns/templates/geodns-update.service.j2
@@ -0,0 +1,12 @@
+[Unit]
+Description=GeoDNS config
+
+[Service]
+Type=oneshot
+WorkingDirectory={{ mdxsaas_dir }}
+ExecStart=git pull
+ExecStart={{ mdxsaas_dir }}/deploy.sh --tags geodns --limit local
+ExecStartPost=/bin/systemctl restart geodns
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/geodns/templates/geodns-update.timer.j2 b/roles/geodns/templates/geodns-update.timer.j2
new file mode 100644
index 0000000000000000000000000000000000000000..0a4e475fd37b1b243d872e8c2b86fa0083709bd7
--- /dev/null
+++ b/roles/geodns/templates/geodns-update.timer.j2
@@ -0,0 +1,9 @@
+[Unit]
+Description=Run GeoDNS update
+
+[Timer]
+OnCalendar=*-*-* *:0/5:00
+Unit=geodns-update.service
+
+[Install]
+WantedBy=timers.target
diff --git a/roles/geodns/templates/geodns.service.j2 b/roles/geodns/templates/geodns.service.j2
index cc608027e2b1fdf3df51f3761ab58e8fe88125e0..47c9484b7eef9ac046693ef605b6102c6c40dba8 100644
--- a/roles/geodns/templates/geodns.service.j2
+++ b/roles/geodns/templates/geodns.service.j2
@@ -5,7 +5,7 @@ After=syslog.target network.target
 [Service]
 Type=simple
 WorkingDirectory={{ geodns_dir }}
-ExecStart={{ geodns_dir }}/geodns -config={{ geo_dns_config }} -log -interface {{ ansible_facts.default_ipv4.address }} -port 53
+ExecStart={{ geodns_dir }}/geodns -config={{ geodns_config }} -log -interface {{ ansible_facts.default_ipv4.address }} -port 53
 # ExecReload=/bin/kill -HUP $MAINPID
 Restart=on-failure
 RestartSec=10