Add faas to ansible

This commit is contained in:
Tobias Reisinger 2023-12-10 23:49:02 +01:00
parent 063b422426
commit 2a3fe723ab
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
13 changed files with 84 additions and 52 deletions

1
.gitignore vendored
View file

@ -24,6 +24,7 @@
/caddy/config/conf.002.d/acme.serguzim.me.conf /caddy/config/conf.002.d/acme.serguzim.me.conf
/caddy/config/conf.002.d/analytics.serguzim.me.conf /caddy/config/conf.002.d/analytics.serguzim.me.conf
/caddy/config/conf.002.d/coder.serguzim.me.conf /caddy/config/conf.002.d/coder.serguzim.me.conf
/caddy/config/conf.002.d/faas.serguzim.me.conf
/caddy/config/conf.002.d/git.serguzim.me.conf /caddy/config/conf.002.d/git.serguzim.me.conf
/caddy/config/conf.002.d/inventory.serguzim.me.conf /caddy/config/conf.002.d/inventory.serguzim.me.conf
/caddy/config/conf.002.d/media.serguzim.me.conf /caddy/config/conf.002.d/media.serguzim.me.conf

View file

@ -8,11 +8,18 @@
hosts: local-dev hosts: local-dev
roles: roles:
- acme-dns - acme-dns
- gitea - coder
- gitea-runner - faas
- forgejo
- forgejo-runner
- healthcheck
- homebox
- influxdb - influxdb
- jellyfin
- tandoor
- telegraf
- umami - umami
- uptime-kuma
- watchtower - watchtower
- webdis
- wiki-js - wiki-js
- caddy

View file

@ -4,6 +4,7 @@
roles: roles:
- acme-dns - acme-dns
- coder - coder
- faas
- forgejo - forgejo
- forgejo-runner - forgejo-runner
- healthcheck - healthcheck

View file

@ -0,0 +1,6 @@
---
- name: Deploy {{ svc.name }}
tags:
- faas
block:
- import_tasks: steps/template-site-config.yml

View file

@ -0,0 +1,31 @@
svc:
name: faas
domain: faas.serguzim.me
docker_host: host.docker.internal
port: 8080
extra_svcs:
- domain: link.serguzim.me
faas_function: url-mapper
- domain: msrg.cc
faas_function: webpage-msrg-cc
www_domain: true
caddy_extra: |
header /.well-known/* Access-Control-Allow-Origin *
handle /.well-known/webfinger {
map {query.resource} {user} {
acct:tobias@msrg.cc serguzim
acct:serguzim@msrg.cc serguzim
}
rewrite * /.well-known/webfinger/{user}.json
import faas webpage-msrg-cc
}
- domain: serguzim.me
faas_function: webpage-serguzim-me
www_domain: true
hsts: true
- domain: team-leon.eu
faas_function: webpage-team-leon-eu
www_domain: true
- domain: xn--sder-5qa.stream
faas_function: webpage-soeder-stream

View file

@ -13,4 +13,5 @@
ansible.builtin.command: ansible.builtin.command:
cmd: docker compose exec app sh -c "caddy validate --config /etc/caddy/Caddyfile && caddy reload --config /etc/caddy/Caddyfile" cmd: docker compose exec app sh -c "caddy validate --config /etc/caddy/Caddyfile && caddy reload --config /etc/caddy/Caddyfile"
chdir: "{{ caddy_path }}" chdir: "{{ caddy_path }}"
when: "'local-dev' != inventory_hostname"
changed_when: template_result.changed changed_when: template_result.changed

View file

@ -1,8 +1,39 @@
{%- macro caddy_site_hsts(svc, for_www) -%}
{%- if svc.hsts|default(false) and (svc.www_domain|default(false) == for_www) -%}
{{ 'header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"' if svc.hsts|default(false) }}
{%- endif -%}
{%- endmacro -%}
{% macro caddy_site(svc) %}
{%- for domain in svc.additional_domains|default([]) %} {%- for domain in svc.additional_domains|default([]) %}
{{ domain }}, {{ domain }},
{% endfor -%} {% endfor -%}
{{ "www." + svc.domain if svc.www_domain|default(false) else svc.domain }} {
import default
{{ caddy_site_hsts(svc, false) }}
{{ svc.caddy_extra | indent(width='\t', first=True) if svc.caddy_extra|default(false) }}
handle {
{% if svc.faas_function|default(false) %}
import faas {{ svc.faas_function }}
{% else %}
reverse_proxy {{ svc.docker_host|default(svc.name) }}:{{ svc.port }}
{% endif %}
}
}
{% if svc.www_domain|default(false) %}
{{ svc.domain }} { {{ svc.domain }} {
import default import default
{{ svc.caddy_extra | default('') | indent(width='\t', first=True) }} {{ caddy_site_hsts(svc, true) }}
reverse_proxy {{ svc.name }}:{{ svc.port }} redir https://www.{{ svc.domain }}{uri}
} }
{% endif %}
{% endmacro -%}
{{ caddy_site(svc) }}
{%- for extra_svc in svc.extra_svcs %}
{{ caddy_site(extra_svc) }}
{% endfor %}

View file

@ -1,4 +0,0 @@
faas.serguzim.me {
import default
reverse_proxy host.docker.internal:8080
}

View file

@ -1,4 +0,0 @@
link.serguzim.me {
import default
import faas url-mapper
}

View file

@ -1,17 +0,0 @@
msrg.cc {
import default
header /.well-known/* Access-Control-Allow-Origin *
handle /.well-known/webfinger {
map {query.resource} {user} {
acct:tobias@msrg.cc serguzim
acct:serguzim@msrg.cc serguzim
}
rewrite * /.well-known/webfinger/{user}.json
import faas webpage-msrg-cc
}
handle {
import faas webpage-msrg-cc
}
}

View file

@ -1,9 +0,0 @@
serguzim.me {
header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload"
redir https://www.serguzim.me{uri}
}
www.serguzim.me {
import default
import faas webpage-serguzim-me
}

View file

@ -1,4 +0,0 @@
xn--sder-5qa.stream {
import default
import faas webpage-soeder-stream
}

View file

@ -1,8 +0,0 @@
team-leon.eu {
redir https://www.team-leon.eu{uri}
}
www.team-leon.eu {
import default
import faas webpage-team-leon.eu
}