aboutsummaryrefslogtreecommitdiffstats
path: root/roles/sshdns
diff options
context:
space:
mode:
authorRomain Gonçalves <me@rgoncalves.se>2021-07-29 17:00:20 +0200
committerRomain Gonçalves <me@rgoncalves.se>2021-07-29 17:00:20 +0200
commitb232b894c3cbe087c8d504e91637dcf62199eed1 (patch)
treeea72a7d1a7f63c6425ee46785e1cec924351b2c3 /roles/sshdns
parent22126073344e60c405d086df37b64da0c6d3c086 (diff)
downloadinfrastructure-b232b894c3cbe087c8d504e91637dcf62199eed1.tar.gz
Bump to third revision of homelab
Diffstat (limited to 'roles/sshdns')
-rw-r--r--roles/sshdns/defaults/main.yml1
-rw-r--r--roles/sshdns/tasks/main.yml25
-rw-r--r--roles/sshdns/templates/sshdns.j220
3 files changed, 46 insertions, 0 deletions
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 %}
remember that computers suck.