From b232b894c3cbe087c8d504e91637dcf62199eed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Romain=20Gon=C3=A7alves?= Date: Thu, 29 Jul 2021 17:00:20 +0200 Subject: Bump to third revision of homelab --- roles/sshdns/defaults/main.yml | 1 + roles/sshdns/tasks/main.yml | 25 +++++++++++++++++++++++++ roles/sshdns/templates/sshdns.j2 | 20 ++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 roles/sshdns/defaults/main.yml create mode 100644 roles/sshdns/tasks/main.yml create mode 100644 roles/sshdns/templates/sshdns.j2 (limited to 'roles/sshdns') diff --git a/roles/sshdns/defaults/main.yml b/roles/sshdns/defaults/main.yml new file mode 100644 index 0000000..9120a10 --- /dev/null +++ b/roles/sshdns/defaults/main.yml @@ -0,0 +1 @@ +sshdns_waittime: 2 diff --git a/roles/sshdns/tasks/main.yml b/roles/sshdns/tasks/main.yml new file mode 100644 index 0000000..f62c706 --- /dev/null +++ b/roles/sshdns/tasks/main.yml @@ -0,0 +1,25 @@ +--- + +- name: get current user + shell: whoami + register: result + +- name: set current user + set_fact: + sshdns_user: '{{ result.stdout_lines[0] }}' + +- name: create config directory + file: + path: '/home/{{ sshdns_user }}/.ssh/config.d' + state: directory + group: '{{ sshdns_user }}' + owner: '{{ sshdns_user }}' + mode: '0700' + +- name: generate template to localhost + template: + src: templates/sshdns.j2 + dest: '/home/{{ sshdns_user }}//.ssh/config.d/ssh_dns' + owner: '{{ sshdns_user }}' + group: '{{ sshdns_user }}' + mode: '0600' diff --git a/roles/sshdns/templates/sshdns.j2 b/roles/sshdns/templates/sshdns.j2 new file mode 100644 index 0000000..1778215 --- /dev/null +++ b/roles/sshdns/templates/sshdns.j2 @@ -0,0 +1,20 @@ +{% import 'macros.j2' as macros with context %} + +# ssh configuration for dns ~~ ~/.ssh/.config.d/ +# managed by Ansible + +{% set dcontroller = hostvars[global.dcontroller] %} +{% call(h) macros.loop_hosts("servers") %} +{% if h.ip is defined and h.services is defined %} +{% set _port = h.services | selectattr("name", "equalto", "ssh") | map(attribute="port") | list | join(' ') %} +# {{ h.ansible_host }} +Match originalhost {{ h.ansible_host }} exec "ping -c 1 -w {{ sshdns_waittime }} {{ dcontroller.ip.in }} && ! ping -c 1 -w {{ sshdns_waittime }} {{ h.ip.out }}" + HostName {{ h.ip.in }} + Port {{ _port }} +Match originalhost {{ h.ansible_host }} + HostName {{ h.ip.out }} + Port {{ _port }} + User root + +{% endif %} +{% endcall %} -- cgit v1.2.3