From 0de5dc23a738ac564c69b0abcac4466457b8784e Mon Sep 17 00:00:00 2001 From: Martin van Es <martin@mrvanes.com> Date: Wed, 23 Mar 2022 15:24:36 +0100 Subject: [PATCH] WIP --- deploy.sh | 1 + inventory/inventory | 3 ++ roles/geodns/defaults/main.yml | 8 +++-- roles/geodns/handlers/main.yml | 2 ++ roles/geodns/tasks/main.yml | 29 +++++++++++++++---- .../geodns/templates/geodns-config.service.j2 | 4 +-- .../geodns/templates/geodns-update.service.j2 | 12 ++++++++ roles/geodns/templates/geodns-update.timer.j2 | 9 ++++++ roles/geodns/templates/geodns.service.j2 | 2 +- 9 files changed, 59 insertions(+), 11 deletions(-) create mode 100644 roles/geodns/templates/geodns-update.service.j2 create mode 100644 roles/geodns/templates/geodns-update.timer.j2 diff --git a/deploy.sh b/deploy.sh index 1b4d178..22b1cba 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 49d8a9d..a09de80 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 3e4b604..291d8ef 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 0b00ab4..676bcc7 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 ce0ec6e..08cf9fc 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 dd98870..f74f869 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 0000000..748012f --- /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 0000000..0a4e475 --- /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 cc60802..47c9484 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 -- GitLab