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