Add matrix authentication service role
This commit is contained in:
1
roles/matrix_authentication_service/README.md
Normal file
1
roles/matrix_authentication_service/README.md
Normal file
@@ -0,0 +1 @@
|
||||
Sets up a matrix authentication service podman container.
|
||||
5
roles/matrix_authentication_service/defaults/main.yaml
Normal file
5
roles/matrix_authentication_service/defaults/main.yaml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
matrix_authentication_service_postgres_tag: 16-alpine
|
||||
|
||||
matrix_authentication_service_email_smtp_server: ""
|
||||
matrix_authentication_service_additional_networks: []
|
||||
132
roles/matrix_authentication_service/meta/argument_specs.yaml
Normal file
132
roles/matrix_authentication_service/meta/argument_specs.yaml
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
argument_specs:
|
||||
main:
|
||||
description: "Sets up a matrix authentication service podman container."
|
||||
options:
|
||||
matrix_authentication_service_additional_networks:
|
||||
description: A list of additional podman networks for the matrix authentication service container.
|
||||
type: list
|
||||
required: false
|
||||
default: []
|
||||
elements: str
|
||||
matrix_authentication_service_domain:
|
||||
description: Domain for matrix authentication service
|
||||
type: str
|
||||
required: true
|
||||
matrix_authentication_service_homeserver_name:
|
||||
description: Homserver server name
|
||||
type: str
|
||||
required: true
|
||||
matrix_authentication_service_homeserver_address:
|
||||
description: Address where homeserver is accessible to matrix authentication service
|
||||
type: str
|
||||
required: true
|
||||
matrix_authentication_service_client_secret:
|
||||
description: >
|
||||
See [upstream docs](https://element-hq.github.io/matrix-authentication-service/setup/homeserver.html#provision-a-client-for-the-homeserver-to-use)
|
||||
type: str
|
||||
required: true
|
||||
matrix_authentication_service_homeserver_secret:
|
||||
description: See [upstream docs](https://element-hq.github.io/matrix-authentication-service/reference/configuration.html#matrix)
|
||||
type: str
|
||||
required: true
|
||||
matrix_authentication_service_secrets:
|
||||
description:
|
||||
- Matrix authentication service secrets.
|
||||
- See [upstream docs](https://element-hq.github.io/matrix-authentication-service/reference/configuration.html#secrets) for more info
|
||||
type: dict
|
||||
required: true
|
||||
options:
|
||||
encryption:
|
||||
type: str
|
||||
required: true
|
||||
keys:
|
||||
type: list
|
||||
required: true
|
||||
elements: dict
|
||||
options:
|
||||
kid:
|
||||
type: str
|
||||
required: true
|
||||
key:
|
||||
type: str
|
||||
required: true
|
||||
matrix_authentication_service_email_smtp_server:
|
||||
description: email.smtp_host, set this to enable sending emails
|
||||
type: str
|
||||
required: false
|
||||
default: ""
|
||||
matrix_authentication_service_email_smtp_user:
|
||||
description: Required if matrix_authentication_service_email_smtp_server is set
|
||||
type: str
|
||||
matrix_authentication_service_email_smtp_password:
|
||||
description: Required if matrix_authentication_service_email_smtp_server is set
|
||||
type: str
|
||||
matrix_authentication_service_email_from:
|
||||
description: Required if matrix_authentication_service_email_smtp_server is set
|
||||
type: str
|
||||
|
||||
matrix_authentication_service_upstream_oauth2_client_id:
|
||||
description: See https://element-hq.github.io/matrix-authentication-service/reference/configuration.html#upstream_oauth2providers
|
||||
type: str
|
||||
required: false
|
||||
default: ""
|
||||
matrix_authentication_service_upstream_oauth2_human_name:
|
||||
description: Required if matrix_authentication_service_upstream_oauth2_client_id is set
|
||||
type: str
|
||||
matrix_authentication_service_upstream_oauth2_client_secret:
|
||||
description: Required if matrix_authentication_service_upstream_oauth2_client_id is set
|
||||
type: str
|
||||
matrix_authentication_service_upstream_oauth2_issuer:
|
||||
description: Required if matrix_authentication_service_upstream_oauth2_client_id is set
|
||||
type: str
|
||||
matrix_authentication_service_upstream_oauth2_scope:
|
||||
description: Required if matrix_authentication_service_upstream_oauth2_client_id is set
|
||||
type: str
|
||||
matrix_authentication_service_upstream_oauth2_claims_imports:
|
||||
description: Required if matrix_authentication_service_upstream_oauth2_client_id is set
|
||||
type: dict
|
||||
options:
|
||||
subject:
|
||||
type: dict
|
||||
required: false
|
||||
options:
|
||||
template:
|
||||
type: str
|
||||
required: true
|
||||
localpart:
|
||||
type: dict
|
||||
required: true
|
||||
options:
|
||||
action:
|
||||
type: str
|
||||
required: true
|
||||
template:
|
||||
description: Required if action is not ignore
|
||||
type: str
|
||||
displayname:
|
||||
type: dict
|
||||
required: true
|
||||
options:
|
||||
action:
|
||||
type: str
|
||||
required: true
|
||||
template:
|
||||
description: Required if action is not ignore
|
||||
type: str
|
||||
email:
|
||||
type: dict
|
||||
required: true
|
||||
options:
|
||||
action:
|
||||
type: str
|
||||
required: true
|
||||
template:
|
||||
description: Required if action is not ignore
|
||||
type: str
|
||||
|
||||
matrix_authentication_service_postgres_tag:
|
||||
description: Postgres tag to use for matrix authentication service postgres container
|
||||
type: str
|
||||
required: false
|
||||
default: 16-alpine
|
||||
16
roles/matrix_authentication_service/tasks/main.yaml
Normal file
16
roles/matrix_authentication_service/tasks/main.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
- name: Matrix authentication service container
|
||||
ansible.builtin.import_role:
|
||||
name: service
|
||||
vars:
|
||||
service_name: matrix-authentication-service
|
||||
service_container_image: "ghcr.io/element-hq/matrix-authentication-service:latest"
|
||||
service_container_additional_networks: "{{ matrix_authentication_service_additional_networks }}"
|
||||
service_database_type: postgres
|
||||
service_postgres_tag: "{{ matrix_authentication_service_postgres_tag }}"
|
||||
service_container_mounts:
|
||||
- type: template
|
||||
source: config.yaml.j2
|
||||
destination: /config.yaml
|
||||
service_container_http_port: 8080
|
||||
service_domains: "{{ [matrix_authentication_service_domain] }}"
|
||||
86
roles/matrix_authentication_service/templates/config.yaml.j2
Normal file
86
roles/matrix_authentication_service/templates/config.yaml.j2
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
# vim:ft=yaml
|
||||
# {{ ansible_managed }}
|
||||
|
||||
http:
|
||||
listeners:
|
||||
- name: web
|
||||
resources:
|
||||
- name: discovery
|
||||
- name: human
|
||||
- name: oauth
|
||||
- name: compat
|
||||
- name: graphql
|
||||
- name: assets
|
||||
binds:
|
||||
- address: '[::]:8080'
|
||||
proxy_protocol: false
|
||||
- name: internal
|
||||
resources:
|
||||
- name: health
|
||||
binds:
|
||||
- host: localhost
|
||||
port: 8081
|
||||
proxy_protocol: false
|
||||
trusted_proxies:
|
||||
- 192.168.0.0/16
|
||||
- 172.16.0.0/12
|
||||
- 10.0.0.0/10
|
||||
- 127.0.0.1/8
|
||||
- fd00::/8
|
||||
- ::1/128
|
||||
public_base: https://{{ matrix_authentication_service_domain }}/
|
||||
database:
|
||||
host: matrix-authentication-service-postgres
|
||||
username: matrix_authentication_service
|
||||
password: "{{ _service_database_password }}"
|
||||
database: matrix_authentication_service
|
||||
|
||||
secrets:
|
||||
{{ matrix_authentication_service_secrets | to_nice_yaml(indent=2) | indent(2) }}
|
||||
|
||||
passwords:
|
||||
enabled: {{ matrix_authentication_service_upstream_oauth2_client_id | length == 0 }}
|
||||
schemes:
|
||||
- version: 1
|
||||
algorithm: argon2id
|
||||
minimum_complexity: 3
|
||||
|
||||
clients:
|
||||
- client_id: 0000000000000000000SYNAPSE
|
||||
client_auth_method: client_secret_basic
|
||||
client_secret: "{{ matrix_authentication_service_client_secret }}"
|
||||
|
||||
matrix:
|
||||
homeserver: {{ matrix_authentication_service_homeserver_name }}
|
||||
secret: "{{ matrix_authentication_service_homeserver_secret }}"
|
||||
endpoint: {{ matrix_authentication_service_homeserver_address }}
|
||||
|
||||
account:
|
||||
email_change_allowed: true
|
||||
displayname_change_allowed: true
|
||||
password_registration_enabled: false
|
||||
|
||||
{% if matrix_authentication_service_email_smtp_server | length > 0 %}
|
||||
email:
|
||||
from: '{{ matrix_authentication_service_email_from }}'
|
||||
transport: smtp
|
||||
mode: starttls
|
||||
hostname: {{ matrix_authentication_service_email_smtp_server }}
|
||||
port: 587
|
||||
username: {{ matrix_authentication_service_email_smtp_user }}
|
||||
password: {{ matrix_authentication_service_email_smtp_password }}
|
||||
{% endif %}
|
||||
{% if matrix_authentication_service_upstream_oauth2_client_id | length > 0 %}
|
||||
upstream_oauth2:
|
||||
providers:
|
||||
- id: 01JD3SBR0NMQB0M1WE3HF26E48
|
||||
human_name: "{{ matrix_authentication_service_upstream_oauth2_human_name }}"
|
||||
issuer: "{{ matrix_authentication_service_upstream_oauth2_issuer }}"
|
||||
client_id: "{{ matrix_authentication_service_upstream_oauth2_client_id }}"
|
||||
client_secret: "{{ matrix_authentication_service_upstream_oauth2_client_secret }}"
|
||||
scope: "{{ matrix_authentication_service_upstream_oauth2_scope }}"
|
||||
claims_imports:
|
||||
{{ matrix_authentication_service_upstream_oauth2_claims_imports | to_nice_yaml(indent=2) | indent(8) }}
|
||||
token_endpoint_auth_method: client_secret_basic
|
||||
{% endif %}
|
||||
Reference in New Issue
Block a user