AI overhaul
This commit is contained in:
+34
-161
@@ -1,171 +1,44 @@
|
||||
#SPDX-License-Identifier: MIT-0
|
||||
# SPDX-License-Identifier: MIT-0
|
||||
---
|
||||
# tasks file for ansible-role-www
|
||||
- name: namespace
|
||||
k8s:
|
||||
- name: Validate public website configuration
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- www_hostname is match('^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$')
|
||||
- www_namespace is match('^[a-z0-9]([a-z0-9-]*[a-z0-9])?$')
|
||||
fail_msg: Use a DNS hostname and a Kubernetes namespace without URL paths or credentials.
|
||||
|
||||
- name: Ensure website namespace
|
||||
kubernetes.core.k8s:
|
||||
state: present
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: www
|
||||
name: "{{ www_namespace }}"
|
||||
|
||||
- name: pvc
|
||||
k8s:
|
||||
- name: Deploy membership prerequisites and workloads
|
||||
ansible.builtin.include_tasks: membership.yml
|
||||
when: www_membership_enabled | bool
|
||||
|
||||
- name: Render Apache membership proxy configuration
|
||||
ansible.builtin.set_fact:
|
||||
_www_proxy_config: "{{ lookup('ansible.builtin.template', 'membership-httpd.conf.j2') }}"
|
||||
|
||||
- name: Deploy Apache, public services, storage and ingress
|
||||
kubernetes.core.k8s:
|
||||
state: present
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: data
|
||||
namespace: www
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteMany
|
||||
resources:
|
||||
requests:
|
||||
storage: 8Ti
|
||||
definition: "{{ lookup('ansible.builtin.template', 'website.yml.j2') | from_yaml_all | list }}"
|
||||
|
||||
- name: configmap for httpd.conf
|
||||
k8s:
|
||||
state: present
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: httpd
|
||||
namespace: www
|
||||
data:
|
||||
httpd.conf: "{{ lookup('file', 'httpd.conf') }}"
|
||||
|
||||
- name: deployment for www
|
||||
k8s:
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: httpd
|
||||
namespace: www
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: httpd
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: httpd
|
||||
spec:
|
||||
initContainers:
|
||||
- name: init
|
||||
image: debian:trixie
|
||||
command:
|
||||
- /bin/bash
|
||||
- -c
|
||||
- "apt update -y && apt install -y git && git clone {{ www_repo_url }} /tmp/www && rm -rf /data/* && cp -r /tmp/www/htdocs/* /data/"
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /data
|
||||
containers:
|
||||
- name: httpd
|
||||
image: ericomeehan/www:latest
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- containerPort: 80
|
||||
- containerPort: 9117
|
||||
volumeMounts:
|
||||
- name: data
|
||||
mountPath: /usr/local/apache2/htdocs
|
||||
- name: httpd
|
||||
mountPath: /usr/local/apache2/conf/httpd.conf
|
||||
subPath: httpd.conf
|
||||
volumes:
|
||||
- name: data
|
||||
persistentVolumeClaim:
|
||||
claimName: data
|
||||
- name: httpd
|
||||
configMap:
|
||||
name: httpd
|
||||
|
||||
- name: service for prometheus
|
||||
k8s:
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: prometheus
|
||||
namespace: www
|
||||
spec:
|
||||
selector:
|
||||
app: httpd
|
||||
ports:
|
||||
- port: 9117
|
||||
name: http
|
||||
type: ClusterIP
|
||||
|
||||
- name: service for httpd
|
||||
k8s:
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: httpd
|
||||
namespace: www
|
||||
spec:
|
||||
selector:
|
||||
app: httpd
|
||||
ports:
|
||||
- port: 80
|
||||
name: http
|
||||
type: ClusterIP
|
||||
|
||||
- name: onionservice
|
||||
k8s:
|
||||
definition:
|
||||
apiVersion: tor.k8s.torproject.org/v1alpha2
|
||||
kind: OnionService
|
||||
metadata:
|
||||
name: httpd
|
||||
namespace: www
|
||||
spec:
|
||||
version: 3
|
||||
rules:
|
||||
- port:
|
||||
number: 80
|
||||
backend:
|
||||
service:
|
||||
name: httpd
|
||||
port:
|
||||
number: 80
|
||||
|
||||
- name: ingress
|
||||
k8s:
|
||||
state: present
|
||||
definition:
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: ca-issuer
|
||||
nginx.ingress.kubernetes.io/enable-cors: "true"
|
||||
nginx.ingress.kubernetes.io/cors-allow-headers: "X-Forwarded-For"
|
||||
name: www
|
||||
namespace: www
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
rules:
|
||||
- host: www.eom.dev
|
||||
http:
|
||||
paths:
|
||||
- pathType: Prefix
|
||||
path: /
|
||||
backend:
|
||||
service:
|
||||
name: httpd
|
||||
port:
|
||||
number: 80
|
||||
tls:
|
||||
- hosts:
|
||||
- www.eom.dev
|
||||
secretName: www
|
||||
- name: Wait for Apache rollout
|
||||
kubernetes.core.k8s_info:
|
||||
api_version: apps/v1
|
||||
kind: Deployment
|
||||
name: httpd
|
||||
namespace: "{{ www_namespace }}"
|
||||
wait: true
|
||||
wait_timeout: "{{ www_wait_timeout }}"
|
||||
wait_condition:
|
||||
type: Available
|
||||
status: "True"
|
||||
when: not ansible_check_mode
|
||||
|
||||
|
||||
Reference in New Issue
Block a user