aboutsummaryrefslogtreecommitdiffstats
path: root/roles/sshdns
diff options
context:
space:
mode:
Diffstat (limited to 'roles/sshdns')
-rw-r--r--roles/sshdns/tasks/main.yml16
-rw-r--r--roles/sshdns/templates/generate_dns.j225
2 files changed, 41 insertions, 0 deletions
diff --git a/roles/sshdns/tasks/main.yml b/roles/sshdns/tasks/main.yml
new file mode 100644
index 0000000..0942e68
--- /dev/null
+++ b/roles/sshdns/tasks/main.yml
@@ -0,0 +1,16 @@
+
+# ssh dns ~~ roles/ssh_dns/tasks/main.yml
+# generate dns for ssh use on workstations
+
+---
+
+- name: create config directory
+ file:
+ path: "{{ lookup('env', 'HOME') }}/.ssh/config.d"
+ state: directory
+ mode: 0700
+
+- name: Generate template to localhost
+ template:
+ src: templates/generate_dns.j2
+ dest: "{{ lookup('env', 'HOME') }}/.ssh/config.d/ssh_dns"
diff --git a/roles/sshdns/templates/generate_dns.j2 b/roles/sshdns/templates/generate_dns.j2
new file mode 100644
index 0000000..a509677
--- /dev/null
+++ b/roles/sshdns/templates/generate_dns.j2
@@ -0,0 +1,25 @@
+
+# ssh configuration for dns ~~ ~/.ssh/.config.d/
+# managed by Ansible
+
+{% for h in groups["all"] %}
+{% set h = hostvars[h] %}
+{% set dcontroller = hostvars[global.dcontroller] %}
+{##}
+{% 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 5 {{ dcontroller.ip.in }} && ! ping -c 1 -W 5 {{ h.ip.out }}"
+ HostName {{ h.ip.in }}
+ Port {{ _port }}
+
+Match originalhost {{ h.ansible_host }}
+ HostName {{ h.ip.out }}
+ Port {{ _port }}
+ User root
+
+{% endif %}
+{##}
+{% endfor %}
remember that computers suck.