blob: a0e5f7539038a570f5037373422ede0c8fb7bd1b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
- name: "Setup password-less SSH port forwarding from {{ relay_host }} to {{ inventory_hostname }}"
tags:
- ssh
ansible.builtin.include_role:
name: ssh_relay_access
apply:
delegate_to: "{{ relay_host }}"
tags:
- relayed_domain
# prefix the variables with their role name to prevent scoping issues
vars:
ssh_relay_accessing_host: "{{ relay_host }}"
ssh_relay_accessed_host: "{{ inventory_hostname }}"
ssh_relay_accessed_user: "{{ ansible_user }}"
- name: "Configure the SSH access from {{ relay_host }} to {{ inventory_hostname }}"
tags:
- ssh
block:
- name: "Authorize the {{ relay_host }} host key at {{ inventory_hostname }}"
ansible.builtin.include_role:
name: ssh_authorize_host
apply:
delegate_to: "{{ relay_host }}"
tags:
- relayed_domain
vars:
ssh_relayed_hostname: "{{ inventory_hostname }}"
ssh_hostname: "{{ relay_host }}"
ssh_port: "{{ relayed_host_ssh_port }}"
- name: "Add {{ inventory_hostname }} to {{ relay_host }}'s ssh config"
delegate_to: "{{ relay_host }}"
ansible.builtin.blockinfile:
create: true
mode: '600'
path: ~/.ssh/config
marker: "# {mark} ANSIBLE MANAGED BLOCK {{ inventory_hostname }}"
block: |
Host {{ inventory_hostname }}
User {{ ansible_user }}
Port {{ relayed_host_ssh_port }}
IdentityFile ~/.ssh/{{ relay_ssh_key_name }}
- name: "Add relayed domain ({{ domain }}) to {{ relay_host }}"
ansible.builtin.include_role:
name: uberspace_domains
apply:
delegate_to: "{{ relay_host }}"
tags:
- relayed_domain
tasks_from: web
vars:
domains:
- "{{ domain }}"
- name: Add web backend for the relayed domain to the relay port
tags:
- ssh
delegate_to: "{{ relay_host }}"
# TODO: detect if this is necessary
ansible.builtin.command:
cmd: "uberspace web backend set {{ domain }} --http --port {{ relay_port }}"
- name: Setup port forward service useing supervisorctl
tags:
- ssh
delegate_to: "{{ relay_host }}"
block:
- name: Install service file
ansible.builtin.template:
src: forward-service.ini.j2
dest: "~/etc/services.d/forward-{{ relay_port }}-to-{{ inventory_hostname }}-{{ relayed_port }}.ini"
mode: '644'
register: forward_service
- name: Ensure port forward service is running
community.general.supervisorctl:
name: "forward-{{ relay_port }}-to-{{ inventory_hostname }}-{{ relayed_port }}"
state: "{{ 'restarted' if forward_service.changed else 'started' }}"
|