summaryrefslogtreecommitdiff
path: root/playbooks/roles/outbound/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'playbooks/roles/outbound/tasks')
-rw-r--r--playbooks/roles/outbound/tasks/main.yml91
1 files changed, 85 insertions, 6 deletions
diff --git a/playbooks/roles/outbound/tasks/main.yml b/playbooks/roles/outbound/tasks/main.yml
index 84070d6..863351f 100644
--- a/playbooks/roles/outbound/tasks/main.yml
+++ b/playbooks/roles/outbound/tasks/main.yml
@@ -1,17 +1,18 @@
---
-- name: Build headscale compose dirs
+# Headscale setup
+- name: Build headscale compose dirs and files
ansible.builtin.file:
state: directory
dest: '/etc/docker/compose/headscale/{{ item.path }}'
- with_filetree: '../templates'
+ with_filetree: '../templates/headscale'
when: item.state == 'directory'
-- name: Build headscale compose files
+- name: Build headscale compose templates
ansible.builtin.template:
src: '{{ item.src }}'
dest: '/etc/docker/compose/headscale/{{ item.path }}'
- with_filetree: '../templates'
+ with_filetree: '../templates/headscale'
when: item.state == 'file'
- name: Daemon-reload and enable headscale
@@ -21,8 +22,86 @@
daemon_reload: true
name: docker-compose@headscale
-- name: Perform rollout incase daemon already started
+- name: Perform rollout for headscale
ansible.builtin.shell:
- cmd: /usr/local/bin/docker-rollout rollout -f docker-compose.yml headscale
+ cmd: "/usr/local/bin/docker-rollout rollout -f docker-compose.yml headscale"
+ chdir: "/etc/docker/compose/headscale"
+
+# User API Key
+- name: Generate API key if homelab build
+ ansible.builtin.shell:
+ cmd: docker compose exec -it headscale headscale apikeys create --expiration "{{ api_key_expiration }}"
chdir: /etc/docker/compose/headscale
+ register: api_key_result
+ when: generate_api_key
+
+- name: Store and display API key
+ when: generate_api_key
+ block:
+ - name: Define API Key Variable
+ set_fact:
+ headscale_api_key: "{{ api_key_result.stdout }}"
+
+ - name: Echo new key
+ ansible.builtin.debug:
+ msg: "Please store this API Key! {{ headscale_api_key }}"
+
+ - name: Pause until user confirms
+ ansible.builtin.pause:
+ prompt: "Press return when ready!"
+
+# System user auth key
+- name: Create system key user and auth key if homelab build
+ when: generate_auth_key
+ block:
+ - name: Create system key user
+ ansible.builtin.shell:
+ cmd: docker compose exec -it headscale headscale users create "{{ auth_key_user }}"
+ chdir: /etc/docker/compose/headscale
+
+ - name: Create auth key preauthkey
+ ansible.builtin.shell:
+ cmd: docker compose exec -it headscale headscale preauthkeys create --reusable --expiration "{{ auth_key_expiration }}" --user "{{ auth_key_user }}"
+ chdir: /etc/docker/compose/headscale
+ register: auth_key_result
+
+ - name: Store and display Auth Key
+ block:
+ - name: Define Auth Key Variable
+ set_fact:
+ headscale_user_auth_key: "{{ auth_key_result.stdout }}"
+
+ - name: Echo new auth key
+ ansible.builtin.debug:
+ msg: "Please store this Auth Key for user {{ auth_key_user }}! {{ headscale_user_auth_key }}"
+
+ - name: Pause until user confirms
+ ansible.builtin.pause:
+ prompt: "Press return when ready!"
+
+# Proxy setup (AFTER API key generation)
+- name: Build proxy compose dirs and files
+ ansible.builtin.file:
+ state: directory
+ dest: '/etc/docker/compose/proxy/{{ item.path }}'
+ with_filetree: '../templates/proxy'
+ when: item.state == 'directory'
+
+- name: Build proxy compose templates
+ ansible.builtin.template:
+ src: '{{ item.src }}'
+ dest: '/etc/docker/compose/proxy/{{ item.path }}'
+ with_filetree: '../templates/proxy'
+ when: item.state == 'file'
+- name: Daemon-reload and enable proxy
+ ansible.builtin.systemd_service:
+ state: started
+ enabled: true
+ daemon_reload: true
+ name: docker-compose@proxy
+
+- name: Perform rollout for proxy
+ ansible.builtin.shell:
+ cmd: "/usr/local/bin/docker-rollout rollout -f docker-compose.yml proxy"
+ chdir: "/etc/docker/compose/proxy"