aboutsummaryrefslogtreecommitdiffstats
path: root/roles
diff options
context:
space:
mode:
authorRomain Gonçalves <me@rgoncalves.se>2021-12-05 13:07:49 +0000
committerRomain Gonçalves <me@rgoncalves.se>2021-12-05 21:03:22 +0000
commita0dd74445b4460e5e7fa4c72bd478348eb960224 (patch)
treef8887dff286c7d39c8c49c62e2969d87a4235f0e /roles
parent28c76a43c348456af3d1508c88c73edaa059735c (diff)
downloadrules-a0dd74445b4460e5e7fa4c72bd478348eb960224.tar.gz
roles/workstation: Generate hostnames for ssh
Diffstat (limited to 'roles')
-rw-r--r--roles/workstation/tasks/main.yml11
-rw-r--r--roles/workstation/tasks/ssh.yml18
-rw-r--r--roles/workstation/templates/ssh.config.j211
3 files changed, 40 insertions, 0 deletions
diff --git a/roles/workstation/tasks/main.yml b/roles/workstation/tasks/main.yml
index c20b81b..87f6188 100644
--- a/roles/workstation/tasks/main.yml
+++ b/roles/workstation/tasks/main.yml
@@ -32,3 +32,14 @@
file: smartcard.yml
apply:
tags: task_smartcard
+
+- name: include ssh setup
+ tags: always
+ include_tasks:
+ file: ssh.yml
+ apply:
+ tags: task_ssh
+ args:
+ apply:
+ become: true
+ become_user: "{{ workstation_user }}"
diff --git a/roles/workstation/tasks/ssh.yml b/roles/workstation/tasks/ssh.yml
new file mode 100644
index 0000000..318198e
--- /dev/null
+++ b/roles/workstation/tasks/ssh.yml
@@ -0,0 +1,18 @@
+- name: create ssh directory
+ file:
+ path: "/home/{{ workstation_user }}/{{ item }}"
+ owner: "{{ workstation_user }}"
+ group: "{{ workstation_user }}"
+ state: directory
+ mode: 0700
+ loop:
+ - .ssh
+ - .ssh/config.d
+
+- name: generate ssh configuration
+ template:
+ src: ssh.config.j2
+ dest: "/home/{{ workstation_user }}/.ssh/config.d/dns.config"
+ owner: "{{ workstation_user }}"
+ group: "{{ workstation_user }}"
+ mode: 0600
diff --git a/roles/workstation/templates/ssh.config.j2 b/roles/workstation/templates/ssh.config.j2
new file mode 100644
index 0000000..2915a1a
--- /dev/null
+++ b/roles/workstation/templates/ssh.config.j2
@@ -0,0 +1,11 @@
+# managed by Ansible
+{% import 'macros.j2' as macros with context %}
+
+{% call(h) macros.loop_valid_hosts("all") %}
+{% set command = "pgrep wg && ! ping -c 1 -w 1 %s" % h.__ip.external %}
+Match originalHost {{ h.inventory_hostname }} exec "{{ command }}"
+ HostName {{ h.__ip.internal }}
+Match originalHost {{ h.inventory_hostname }}
+ HostName {{ h.__ip.external }}
+
+{% endcall %}
remember that computers suck.