Add faas to ansible
This commit is contained in:
parent
063b422426
commit
2a3fe723ab
13 changed files with 84 additions and 52 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -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
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
roles:
|
roles:
|
||||||
- acme-dns
|
- acme-dns
|
||||||
- coder
|
- coder
|
||||||
|
- faas
|
||||||
- forgejo
|
- forgejo
|
||||||
- forgejo-runner
|
- forgejo-runner
|
||||||
- healthcheck
|
- healthcheck
|
||||||
|
|
6
_ansible/roles/faas/tasks/main.yml
Normal file
6
_ansible/roles/faas/tasks/main.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
- name: Deploy {{ svc.name }}
|
||||||
|
tags:
|
||||||
|
- faas
|
||||||
|
block:
|
||||||
|
- import_tasks: steps/template-site-config.yml
|
31
_ansible/roles/faas/vars/main.yml
Normal file
31
_ansible/roles/faas/vars/main.yml
Normal 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
|
|
@ -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
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
faas.serguzim.me {
|
|
||||||
import default
|
|
||||||
reverse_proxy host.docker.internal:8080
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
link.serguzim.me {
|
|
||||||
import default
|
|
||||||
import faas url-mapper
|
|
||||||
}
|
|
|
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
xn--sder-5qa.stream {
|
|
||||||
import default
|
|
||||||
import faas webpage-soeder-stream
|
|
||||||
}
|
|
|
@ -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
|
|
||||||
}
|
|
Reference in a new issue