aboutsummaryrefslogtreecommitdiff
path: root/roles/archivebox
diff options
context:
space:
mode:
Diffstat (limited to 'roles/archivebox')
-rw-r--r--roles/archivebox/defaults/main.yaml9
-rw-r--r--roles/archivebox/files/archivebox/.helmignore23
-rw-r--r--roles/archivebox/files/archivebox/Chart.yaml5
-rw-r--r--roles/archivebox/files/archivebox/templates/deployment.yaml45
-rw-r--r--roles/archivebox/files/archivebox/templates/ingress.yaml23
-rw-r--r--roles/archivebox/files/archivebox/templates/pv.yaml16
-rw-r--r--roles/archivebox/files/archivebox/templates/pvc.yaml14
-rw-r--r--roles/archivebox/files/archivebox/templates/service.yaml14
-rw-r--r--roles/archivebox/tasks/main.yaml17
9 files changed, 166 insertions, 0 deletions
diff --git a/roles/archivebox/defaults/main.yaml b/roles/archivebox/defaults/main.yaml
new file mode 100644
index 0000000..0afc620
--- /dev/null
+++ b/roles/archivebox/defaults/main.yaml
@@ -0,0 +1,9 @@
+archivebox:
+ enabled: false
+ replicas: 1
+ port: 8000
+ image: archivebox/archivebox
+ version: 0.7
+
+nfs:
+ path: "/mnt/nfs/k3s/archivebox"
diff --git a/roles/archivebox/files/archivebox/.helmignore b/roles/archivebox/files/archivebox/.helmignore
new file mode 100644
index 0000000..0e8a0eb
--- /dev/null
+++ b/roles/archivebox/files/archivebox/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/roles/archivebox/files/archivebox/Chart.yaml b/roles/archivebox/files/archivebox/Chart.yaml
new file mode 100644
index 0000000..40b00c9
--- /dev/null
+++ b/roles/archivebox/files/archivebox/Chart.yaml
@@ -0,0 +1,5 @@
+apiVersion: v2
+name: archivebox
+description: Archival system
+type: application
+version: 0.1.0
diff --git a/roles/archivebox/files/archivebox/templates/deployment.yaml b/roles/archivebox/files/archivebox/templates/deployment.yaml
new file mode 100644
index 0000000..02a3bfb
--- /dev/null
+++ b/roles/archivebox/files/archivebox/templates/deployment.yaml
@@ -0,0 +1,45 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: "{{ .Chart.Name }}-deployment"
+ labels:
+ app: {{ .Chart.Name }}
+spec:
+ replicas: {{ .Values.replicas }}
+ selector:
+ matchLabels:
+ app: {{ .Chart.Name }}
+ template:
+ metadata:
+ labels:
+ app: {{ .Chart.Name }}
+ spec:
+ containers:
+ - name: archivebox
+ image: "{{ .Values.image }}:{{ .Values.version }}"
+ env:
+ - name: PUBLIC_INDEX
+ value: "False"
+ - name: PUBLIC_SNAPSHOTS
+ value: "False"
+ - name: PUID
+ value: "1000"
+ - name: PGID
+ value: "1000"
+ - name: SAVE_ARCHIVE_DOT_ORG
+ value: "False"
+ - name: SAVE_SCREENSHOT
+ value: "False"
+ - name: SAVE_DOM
+ value: "False"
+ - name: SAVE_SINGLEFILE
+ value: "False"
+
+ volumeMounts:
+ - mountPath: "/data"
+ name: "{{ .Chart.Name }}-volume"
+ subPath: data
+ volumes:
+ - name: "{{ .Chart.Name }}-volume"
+ persistentVolumeClaim:
+ claimName: "{{ .Chart.Name }}-pvc"
diff --git a/roles/archivebox/files/archivebox/templates/ingress.yaml b/roles/archivebox/files/archivebox/templates/ingress.yaml
new file mode 100644
index 0000000..2601655
--- /dev/null
+++ b/roles/archivebox/files/archivebox/templates/ingress.yaml
@@ -0,0 +1,23 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: archivebox
+ annotations:
+ cert-manager.io/cluster-issuer: "ca-issuer"
+spec:
+ ingressClassName: traefik
+ tls:
+ - hosts:
+ - archive.home
+ secretName: archivebox-tls
+ rules:
+ - host: archive.home
+ http:
+ paths:
+ - path: /
+ pathType: Prefix
+ backend:
+ service:
+ name: archivebox-service
+ port:
+ number: 80
diff --git a/roles/archivebox/files/archivebox/templates/pv.yaml b/roles/archivebox/files/archivebox/templates/pv.yaml
new file mode 100644
index 0000000..869b121
--- /dev/null
+++ b/roles/archivebox/files/archivebox/templates/pv.yaml
@@ -0,0 +1,16 @@
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+ name: "{{ .Chart.Name }}-pv"
+ labels:
+ app: "{{ .Chart.Name }}-pv"
+spec:
+ storageClassName: nfs
+ capacity:
+ storage: 100Gi
+ accessModes:
+ - ReadWriteMany
+ nfs:
+ server: {{ .Values.nfs.server }}
+ path: {{ .Values.nfs.path }}
+ readOnly: false
diff --git a/roles/archivebox/files/archivebox/templates/pvc.yaml b/roles/archivebox/files/archivebox/templates/pvc.yaml
new file mode 100644
index 0000000..10a5ced
--- /dev/null
+++ b/roles/archivebox/files/archivebox/templates/pvc.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: {{ .Chart.Name }}-pvc
+spec:
+ storageClassName: nfs
+ accessModes:
+ - ReadWriteMany
+ resources:
+ requests:
+ storage: 100Gi
+ selector:
+ matchLabels:
+ app: "{{ .Chart.Name }}-pv"
diff --git a/roles/archivebox/files/archivebox/templates/service.yaml b/roles/archivebox/files/archivebox/templates/service.yaml
new file mode 100644
index 0000000..bb8bcc2
--- /dev/null
+++ b/roles/archivebox/files/archivebox/templates/service.yaml
@@ -0,0 +1,14 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ .Chart.Name }}-service
+spec:
+ type: ClusterIP
+ selector:
+ app: {{ .Chart.Name }}
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 8000
+ name: webui
+
diff --git a/roles/archivebox/tasks/main.yaml b/roles/archivebox/tasks/main.yaml
new file mode 100644
index 0000000..a4abe9f
--- /dev/null
+++ b/roles/archivebox/tasks/main.yaml
@@ -0,0 +1,17 @@
+---
+- name: Deploy Archivebox
+ kubernetes.core.helm:
+ name: archivebox
+ chart_ref: "{{ lookup('env', 'PWD') }}/roles/archivebox/files/archivebox"
+ namespace: default
+ state: "{%- if archivebox.enabled -%} present {%- else -%} absent {%- endif -%}"
+ values:
+ replicas: "{{ archivebox.replicas }}"
+ port: "{{ archivebox.port }}"
+ image: "{{ archivebox.image }}"
+ version: "{{ archivebox.version }}"
+ nfs:
+ server: "{{ nfs.server }}"
+ path: "{{ nfs.path }}"
+ delegate_to: localhost
+ run_once: true