aboutsummaryrefslogtreecommitdiff
path: root/tasks/main.yml
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-03-15 13:48:19 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2024-03-15 13:48:19 +0100
commit0ae1913d9c2807680bbd23ce2e0df903d08af1b0 (patch)
tree8835b4975f952260f2601c51d900a89158205bac /tasks/main.yml
downloadrelayed_domain-0ae1913d9c2807680bbd23ce2e0df903d08af1b0.tar.gz
relayed_domain-0ae1913d9c2807680bbd23ce2e0df903d08af1b0.zip
initial commitHEADmain
Diffstat (limited to 'tasks/main.yml')
-rw-r--r--tasks/main.yml80
1 files changed, 80 insertions, 0 deletions
diff --git a/tasks/main.yml b/tasks/main.yml
new file mode 100644
index 0000000..a0e5f75
--- /dev/null
+++ b/tasks/main.yml
@@ -0,0 +1,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' }}"