Update submodules

This commit is contained in:
2026-10-26 19:00:45 -04:00
parent ee326d4210
commit ed00d40788
10 changed files with 450 additions and 3 deletions
+9
View File
@@ -112,3 +112,12 @@
[submodule "roles/ericomeehan.the-button"]
path = roles/ericomeehan.the-button
url = git@gitea.eom.dev:DevOps/ansible-role-the-button.git
[submodule "roles/ericomeehan.dex"]
path = roles/ericomeehan.dex
url = git@gitea.eom.dev:DevOps/ansible-role-dex.git
[submodule "roles/ericomeehan.owncast"]
path = roles/ericomeehan.owncast
url = git@gitea.eom.dev:Broadcast/ansible-role-owncast.git
[submodule "roles/ericomeehan.luanti-wasm"]
path = roles/ericomeehan.luanti-wasm
url = git@gitea.eom.dev:Gaming/ansible-role-luanti-wasm.git
+309
View File
@@ -0,0 +1,309 @@
NAME READY STATUS RESTARTS AGE
luanti-wasm-54784f4658-pwcss 1/2 CrashLoopBackOff 9 (3m31s ago) 26m
luanti-wasm-54784f4658-qfvmt 0/2 ContainerStatusUnknown 0 28m
luanti-wasm-7db86bcccf-5dx9q 1/2 ImagePullBackOff 0 28m
Name: luanti-wasm-54784f4658-pwcss
Namespace: luanti-wasm
Priority: 0
Service Account: default
Node: alpha-worker-14/192.168.1.69
Start Time: Sun, 25 Oct 2026 18:12:03 -0400
Labels: app=luanti-wasm
pod-template-hash=54784f4658
Annotations: checksum/config: b356923e5ed40b59bb67c8d93fb0d7d078e026f9400a99e8ceaa47b3a0b654e9
Status: Running
SeccompProfile: RuntimeDefault
IP: 10.244.13.247
IPs:
IP: 10.244.13.247
Controlled By: ReplicaSet/luanti-wasm-54784f4658
Containers:
web:
Container ID: containerd://eb68f380d8a8b8a8716ba75b3f40ebfd1b9418a4d56c038434e26746bc8bd5f5
Image: ericomeehan/luanti-wasm:latest
Image ID: docker.io/ericomeehan/luanti-wasm@sha256:bcb1bc1a18f1262d69a9427e20f6d30ce85ba085dc2d6ed15b1b53503bf1e3bd
Port: 8080/TCP
Host Port: 0/TCP
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Completed
Exit Code: 0
Started: Sun, 25 Oct 2026 18:34:42 -0400
Finished: Sun, 25 Oct 2026 18:34:42 -0400
Ready: False
Restart Count: 9
Limits:
cpu: 500m
memory: 256Mi
Requests:
cpu: 100m
memory: 64Mi
Liveness: http-get http://:http/ delay=0s timeout=1s period=20s #success=1 #failure=3
Readiness: http-get http://:http/ delay=0s timeout=1s period=10s #success=1 #failure=3
Startup: http-get http://:http/ delay=0s timeout=1s period=2s #success=1 #failure=30
Environment: <none>
Mounts:
/etc/nginx/nginx.conf from config (ro,path="nginx.conf")
/tmp from tmp (rw)
proxy:
Container ID: containerd://09f94df439663c026b1c5cb10bcc795984d606faee3ee6a9c8f89ae78a6df146
Image: ericomeehan/luanti-wasm-proxy:latest
Image ID: docker.io/ericomeehan/luanti-wasm-proxy@sha256:e600e3d8b84e4e6b4e4a4c46151e2a364dface82a67d2c97c3b62984677ff5e9
Port: 7777/TCP
Host Port: 0/TCP
State: Running
Started: Sun, 25 Oct 2026 18:13:31 -0400
Ready: True
Restart Count: 0
Limits:
cpu: 500m
memory: 256Mi
Requests:
cpu: 100m
memory: 64Mi
Liveness: tcp-socket :proxy delay=0s timeout=1s period=20s #success=1 #failure=3
Readiness: tcp-socket :proxy delay=0s timeout=1s period=10s #success=1 #failure=3
Startup: tcp-socket :proxy delay=0s timeout=1s period=2s #success=1 #failure=30
Environment: <none>
Mounts:
/etc/lwproxy.toml from config (ro,path="lwproxy.toml")
Conditions:
Type Status
PodReadyToStartContainers True
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
config:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: luanti-wasm-config
Optional: false
tmp:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium: Memory
SizeLimit: 64Mi
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 26m default-scheduler Successfully assigned luanti-wasm/luanti-wasm-54784f4658-pwcss to alpha-worker-14
Normal Pulling 26m kubelet Pulling image "ericomeehan/luanti-wasm:latest"
Normal Pulled 24m kubelet Successfully pulled image "ericomeehan/luanti-wasm:latest" in 1m23.761s (1m23.761s including waiting). Image size: 1282177336 bytes.
Normal Pulling 24m kubelet Pulling image "ericomeehan/luanti-wasm-proxy:latest"
Normal Pulled 24m kubelet Successfully pulled image "ericomeehan/luanti-wasm-proxy:latest" in 2.919s (2.919s including waiting). Image size: 35770513 bytes.
Normal Created 24m kubelet Created container: proxy
Normal Started 24m kubelet Started container proxy
Normal Created 23m (x4 over 24m) kubelet Created container: web
Normal Started 23m (x4 over 24m) kubelet Started container web
Normal Pulled 23m (x3 over 24m) kubelet Container image "ericomeehan/luanti-wasm:latest" already present on machine
Warning BackOff 62s (x129 over 24m) kubelet Back-off restarting failed container web in pod luanti-wasm-54784f4658-pwcss_luanti-wasm(5b66ac3b-d39c-4b37-8585-4fd25ac77436)
Name: luanti-wasm-54784f4658-qfvmt
Namespace: luanti-wasm
Priority: 0
Service Account: default
Node: alpha-worker-10/192.168.1.90
Start Time: Sun, 25 Oct 2026 18:09:56 -0400
Labels: app=luanti-wasm
pod-template-hash=54784f4658
Annotations: checksum/config: b356923e5ed40b59bb67c8d93fb0d7d078e026f9400a99e8ceaa47b3a0b654e9
Status: Failed
Reason: Evicted
Message: The node was low on resource: ephemeral-storage. Threshold quantity: 2510076003, available: 0.
SeccompProfile: RuntimeDefault
IP: 10.244.11.89
IPs:
IP: 10.244.11.89
Controlled By: ReplicaSet/luanti-wasm-54784f4658
Containers:
web:
Container ID:
Image: ericomeehan/luanti-wasm:latest
Image ID:
Port: 8080/TCP
Host Port: 0/TCP
State: Terminated
Reason: ContainerStatusUnknown
Message: The container could not be located when the pod was terminated
Exit Code: 137
Started: Mon, 01 Jan 0001 00:00:00 +0000
Finished: Mon, 01 Jan 0001 00:00:00 +0000
Ready: False
Restart Count: 0
Limits:
cpu: 500m
memory: 256Mi
Requests:
cpu: 100m
memory: 64Mi
Liveness: http-get http://:http/ delay=0s timeout=1s period=20s #success=1 #failure=3
Readiness: http-get http://:http/ delay=0s timeout=1s period=10s #success=1 #failure=3
Startup: http-get http://:http/ delay=0s timeout=1s period=2s #success=1 #failure=30
Environment: <none>
Mounts:
/etc/nginx/nginx.conf from config (ro,path="nginx.conf")
/tmp from tmp (rw)
proxy:
Container ID:
Image: ericomeehan/luanti-wasm-proxy:latest
Image ID:
Port: 7777/TCP
Host Port: 0/TCP
State: Terminated
Reason: ContainerStatusUnknown
Message: The container could not be located when the pod was terminated
Exit Code: 137
Started: Mon, 01 Jan 0001 00:00:00 +0000
Finished: Mon, 01 Jan 0001 00:00:00 +0000
Ready: False
Restart Count: 0
Limits:
cpu: 500m
memory: 256Mi
Requests:
cpu: 100m
memory: 64Mi
Liveness: tcp-socket :proxy delay=0s timeout=1s period=20s #success=1 #failure=3
Readiness: tcp-socket :proxy delay=0s timeout=1s period=10s #success=1 #failure=3
Startup: tcp-socket :proxy delay=0s timeout=1s period=2s #success=1 #failure=30
Environment: <none>
Mounts:
/etc/lwproxy.toml from config (ro,path="lwproxy.toml")
Conditions:
Type Status
DisruptionTarget True
PodReadyToStartContainers False
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
config:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: luanti-wasm-config
Optional: false
tmp:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium: Memory
SizeLimit: 64Mi
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 28m default-scheduler Successfully assigned luanti-wasm/luanti-wasm-54784f4658-qfvmt to alpha-worker-10
Normal Pulling 28m kubelet Pulling image "ericomeehan/luanti-wasm:latest"
Warning Evicted 27m kubelet The node was low on resource: ephemeral-storage. Threshold quantity: 2510076003, available: 2435104Ki.
Warning Evicted 27m kubelet The node was low on resource: ephemeral-storage. Threshold quantity: 2510076003, available: 815628Ki.
Warning Evicted 26m kubelet The node was low on resource: ephemeral-storage. Threshold quantity: 2510076003, available: 0.
Warning ExceededGracePeriod 26m (x3 over 27m) kubelet Container runtime did not kill the pod within specified grace period.
Normal Pulled 26m kubelet Successfully pulled image "ericomeehan/luanti-wasm:latest" in 1m56.007s (1m56.007s including waiting). Image size: 1282177336 bytes.
Normal Created 26m kubelet Created container web
Normal Started 26m kubelet Started container web
Normal Pulling 26m kubelet Pulling image "ericomeehan/luanti-wasm-proxy:latest"
Warning Failed 26m kubelet Failed to pull image "ericomeehan/luanti-wasm-proxy:latest": failed to pull and unpack image "docker.io/ericomeehan/luanti-wasm-proxy:latest": failed to copy: write /var/lib/containerd/io.containerd.content.v1.content/ingest/42c720c250d43a6a6a821fd08486d3a519d360eb72da88caf45d20beed21da63/data: no space left on device
Warning Failed 26m kubelet Error: ErrImagePull
Name: luanti-wasm-7db86bcccf-5dx9q
Namespace: luanti-wasm
Priority: 0
Service Account: default
Node: alpha-worker-8/192.168.1.71
Start Time: Sun, 25 Oct 2026 18:09:20 -0400
Labels: app=luanti-wasm
pod-template-hash=7db86bcccf
Annotations: checksum/config: b356923e5ed40b59bb67c8d93fb0d7d078e026f9400a99e8ceaa47b3a0b654e9
Status: Pending
SeccompProfile: RuntimeDefault
IP: 10.244.10.2
IPs:
IP: 10.244.10.2
Controlled By: ReplicaSet/luanti-wasm-7db86bcccf
Containers:
web:
Container ID:
Image: ericomeehan/luanti-wasm:bcb1bc1a18f1262d69a9427e20f6d30ce85ba085dc2d6ed15b1b53503bf1e3bd
Image ID:
Port: 8080/TCP
Host Port: 0/TCP
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Limits:
cpu: 500m
memory: 256Mi
Requests:
cpu: 100m
memory: 64Mi
Liveness: http-get http://:http/ delay=0s timeout=1s period=20s #success=1 #failure=3
Readiness: http-get http://:http/ delay=0s timeout=1s period=10s #success=1 #failure=3
Startup: http-get http://:http/ delay=0s timeout=1s period=2s #success=1 #failure=30
Environment: <none>
Mounts:
/etc/nginx/nginx.conf from config (ro,path="nginx.conf")
/tmp from tmp (rw)
proxy:
Container ID: containerd://b312219bbe512bdbb4fc86957bdef3ab0548a7e72869036d5d642bb64ed311b7
Image: ericomeehan/luanti-wasm-proxy:latest
Image ID: docker.io/ericomeehan/luanti-wasm-proxy@sha256:e600e3d8b84e4e6b4e4a4c46151e2a364dface82a67d2c97c3b62984677ff5e9
Port: 7777/TCP
Host Port: 0/TCP
State: Running
Started: Sun, 25 Oct 2026 18:09:24 -0400
Ready: True
Restart Count: 0
Limits:
cpu: 500m
memory: 256Mi
Requests:
cpu: 100m
memory: 64Mi
Liveness: tcp-socket :proxy delay=0s timeout=1s period=20s #success=1 #failure=3
Readiness: tcp-socket :proxy delay=0s timeout=1s period=10s #success=1 #failure=3
Startup: tcp-socket :proxy delay=0s timeout=1s period=2s #success=1 #failure=30
Environment: <none>
Mounts:
/etc/lwproxy.toml from config (ro,path="lwproxy.toml")
Conditions:
Type Status
PodReadyToStartContainers True
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
config:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: luanti-wasm-config
Optional: false
tmp:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium: Memory
SizeLimit: 64Mi
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 28m default-scheduler Successfully assigned luanti-wasm/luanti-wasm-7db86bcccf-5dx9q to alpha-worker-8
Normal Pulling 28m kubelet Pulling image "ericomeehan/luanti-wasm-proxy:latest"
Normal Pulled 28m kubelet Successfully pulled image "ericomeehan/luanti-wasm-proxy:latest" in 2.756s (2.756s including waiting). Image size: 35770513 bytes.
Normal Created 28m kubelet Created container proxy
Normal Started 28m kubelet Started container proxy
Normal Pulling 28m (x3 over 28m) kubelet Pulling image "ericomeehan/luanti-wasm:bcb1bc1a18f1262d69a9427e20f6d30ce85ba085dc2d6ed15b1b53503bf1e3bd"
Warning Failed 28m (x3 over 28m) kubelet Failed to pull image "ericomeehan/luanti-wasm:bcb1bc1a18f1262d69a9427e20f6d30ce85ba085dc2d6ed15b1b53503bf1e3bd": rpc error: code = NotFound desc = failed to pull and unpack image "docker.io/ericomeehan/luanti-wasm:bcb1bc1a18f1262d69a9427e20f6d30ce85ba085dc2d6ed15b1b53503bf1e3bd": failed to resolve reference "docker.io/ericomeehan/luanti-wasm:bcb1bc1a18f1262d69a9427e20f6d30ce85ba085dc2d6ed15b1b53503bf1e3bd": docker.io/ericomeehan/luanti-wasm:bcb1bc1a18f1262d69a9427e20f6d30ce85ba085dc2d6ed15b1b53503bf1e3bd: not found
Warning Failed 28m (x3 over 28m) kubelet Error: ErrImagePull
Warning Failed 27m (x6 over 28m) kubelet Error: ImagePullBackOff
Normal BackOff 3m41s (x114 over 28m) kubelet Back-off pulling image "ericomeehan/luanti-wasm:bcb1bc1a18f1262d69a9427e20f6d30ce85ba085dc2d6ed15b1b53503bf1e3bd"
Executable
+83
View File
@@ -0,0 +1,83 @@
---
# Run on the controller with its existing kubeconfig; no SSH target is required.
# Supply credentials via inventory/group_vars or a Vault-encrypted vars file.
- name: Deploy eom.dev Dex with Catppuccin branding
hosts: alpha-control-plane
become: true
vars_files:
- ../secrets.yaml
vars:
dex_namespace: dex
dex_release_name: dex
dex_chart_version: "0.26.0"
dex_issuer: https://dex.eom.dev/
dex_hostname: dex.eom.dev
dex_ingress_class: nginx
dex_cluster_issuer: ca-issuer
dex_tls_secret_name: dex
dex_theme_enabled: true
dex_brand_name: eom.dev
dex_theme_configmap_name: dex-catppuccin
# Preserve the existing DB release and data; do not upgrade it by default.
dex_postgres_manage: false
dex_postgres_release_name: postgresql
dex_postgres_host: postgresql
dex_postgres_port: 5432
dex_postgres_database: dex
dex_postgres_user: dex
dex_postgres_storage_size: 256Gi
dex_postgres_ssl_mode: disable
dex_postgres_password: "{{ dex_admin_password }}"
dex_postgres_admin_password: "{{ postgresql_admin_password | default('') }}"
# Explicitly preserve internal plaintext LDAP and legacy OIDC subjects.
dex_ldap_host: openldap.openldap.svc.cluster.local
dex_ldap_insecure_no_ssl: true
dex_ldap_start_tls: false
dex_ldap_bind_dn: cn=readonly,dc=eom,dc=dev
dex_ldap_bind_password: "{{ openldap_readonly_password }}"
dex_ldap_connector_id: ldap
dex_ldap_connector_name: eom.dev account
dex_ldap_user_base_dn: dc=eom,dc=dev
dex_ldap_user_filter: "(&(objectClass=posixAccount)(memberOf=cn=Dex Users,ou=Dex,ou=Services,dc=eom,dc=dev))"
dex_ldap_id_attribute: uid
dex_ldap_name_attribute: givenName
dex_ldap_group_base_dn: dc=eom,dc=dev
dex_ldap_group_user_attribute: cn
dex_ldap_group_filter: "(objectClass=groupOfUniqueNames)"
dex_matrix_client_enabled: true
dex_matrix_redirect_uris:
- https://mas.eom.dev/upstream/callback/01K96AQEZKKABW34PY3R6BVNJ4
# Optional website integration. Set www_dex_client_secret in Vault to enable;
# it must equal the membership application's DEX_CLIENT_SECRET.
dex_static_clients: "{{ [{'id': 'www-membership', 'name': 'eom.dev Membership', 'secret': www_dex_client_secret, 'redirectURIs': ['https://www.eom.dev/members/oidc/callback/']}] if (www_dex_client_secret | default('') | length > 0) else [] }}"
dex_additional_connectors: "{{ [_dex_eom_www_connector] if (www_dex_client_secret | default('') | length > 0) else [] }}"
_dex_eom_www_connector:
type: ldap
id: www-ldap
name: eom.dev Membership
config:
host: openldap.openldap.svc.cluster.local
insecureNoSSL: true
bindDN: cn=readonly,dc=eom,dc=dev
bindPW: "{{ openldap_readonly_password }}"
userSearch:
baseDN: ou=people,dc=eom,dc=dev
filter: "(objectClass=inetOrgPerson)"
username: uid
idAttr: entryUUID
emailAttr: mail
nameAttr: cn
preferredUsernameAttr: uid
groupSearch:
baseDN: ou=groups,dc=eom,dc=dev
filter: "(objectClass=groupOfUniqueNames)"
userMatchers:
- userAttr: DN
groupAttr: uniqueMember
nameAttr: cn
roles:
- ericomeehan.dex
+43
View File
@@ -7,3 +7,46 @@
- role: ericomeehan.www
vars:
www_repo_url: https://gitea.eom.dev/DevOps/www.git
www_hostname: www.eom.dev
www_cluster_issuer: ca-issuer
www_httpd_image: ericomeehan/www:latest
www_onion_enabled: true
www_membership_enabled: true
www_membership_image: ericomeehan/www-members:latest
www_membership_image_pull_policy: Always
www_archive_storage_size: 2Ti
www_membership_postgres_storage_size: 2Ti
www_membership_postgres_storage_class: nfs-client
www_membership_stripe_enabled: true
www_membership_shkeeper_enabled: true
www_membership_environment_overrides:
MEMBERSHIP_PUBLIC_URL: "https://{{ www_hostname }}"
MEMBERSHIP_ALLOW_HTTP: "0"
MEMBERSHIP_TRUST_PROXY: "1"
MEMBERSHIP_TIERS_FILE: /etc/membership/tiers/tiers.json
POSTGRES_HOST: membership-db
POSTGRES_PORT: "5432"
POSTGRES_DB: membership
POSTGRES_USER: membership
POSTGRES_SSLMODE: prefer
DEX_ISSUER: https://dex.eom.dev/
DEX_CLIENT_ID: www-membership
DEX_CONNECTOR_ID: ldap
LDAP_URL: ldaps://192.168.1.165
LDAP_BIND_DN: "cn=readwrite,dc=eom,dc=dev"
LDAP_ACCOUNT_BASE_DN: ou=People,dc=example,dc=com
LDAP_SEARCH_BASE_DN: dc=example,dc=com
LDAP_PASSWORD_SCHEME: "{ARGON2}"
LDAP_GROUP_PLACEHOLDER_DN: cn=membership-sentinel,ou=system,dc=example,dc=com
LDAP_CA_CERT_FILE: ""
EMAIL_HOST: "postfix.eom.dev"
EMAIL_PORT: "587"
EMAIL_HOST_USER: "accounts@eom.dev"
EMAIL_USE_TLS: "1"
DEFAULT_FROM_EMAIL: accounts@eom.dev
STRIPE_LIVE_MODE: "0"
STRIPE_PORTAL_CONFIGURATION: "pk_live_51RXqTsC5KPXqTvVLWl5bzCxoaZivWceeLGMNURUmxzQMwaM5pUUl4VabywrjCQvgKopGFvUBqPLxRMF3eALsiDst00tR59vRhN"
SHKEEPER_URL: "https://shkeeper.eom.dev/"
SHKEEPER_CURRENCIES: "BTC"
SHKEEPER_CA_CERT_FILE: ""