diff --git a/tasks/main.yml b/tasks/main.yml index b9dd9b7..1cd8d72 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -9,5 +9,8 @@ - name: import dnsmasq import_tasks: dnsmasq.yml +- name: import metadata + import_tasks: metadata.yml + - name: import frr import_tasks: frr.yml \ No newline at end of file diff --git a/tasks/metadata.yml b/tasks/metadata.yml new file mode 100644 index 0000000..0ccf882 --- /dev/null +++ b/tasks/metadata.yml @@ -0,0 +1,17 @@ +--- + +# missing metadata binarie +# a dl depuis le forgejo un jour +# quand je publierais un binaire +# ou un package + +- name: deploy metadata + ansible.builtin.template: + src: etc/systemd/system/metadata.j2 + dest: "/etc/systemd/system/metadata@.service" + notify: systemctl daemon-reload + +- name: deploy metadata in netns + ansible.builtin.template: + src: usr/local/bin/run-metadata-in-netns.sh.j2 + dest: "/usr/local/bin/run-metadata-in-netns.sh" \ No newline at end of file diff --git a/templates/etc/systemd/system/metadata.j2 b/templates/etc/systemd/system/metadata.j2 new file mode 100644 index 0000000..54cf08a --- /dev/null +++ b/templates/etc/systemd/system/metadata.j2 @@ -0,0 +1,10 @@ +[Unit] +Description=metadata in netns %i +After=network.target + +[Service] +Type=simple +ExecStart=/usr/local/bin/run-metadata-in-netns.sh %i + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/templates/usr/local/bin/run-metadata-in-netns.sh.j2 b/templates/usr/local/bin/run-metadata-in-netns.sh.j2 new file mode 100644 index 0000000..612dd18 --- /dev/null +++ b/templates/usr/local/bin/run-metadata-in-netns.sh.j2 @@ -0,0 +1,17 @@ +#!/bin/bash +set -e + +# Expects one argument: netns_bridge (e.g. vpc-00003_br-00002 or vpc1_br0) +arg="$1" +NETNS="${arg%%_*}" +ip_port="${arg#*_}" +IP="${ip_port%%-*}" +PORT="${ip_port#*-}" + +echo "start metadata ${NETNS} " + +exec ip netns exec "${NETNS}" \ + /usr/bin/metadata \ + -file "/opt/metadata/${arg}.conf" \ + -interface "${IP}" \ + -port "${PORT}" \ No newline at end of file