diff --git a/bootstrap/tasks/addons/main.yaml b/bootstrap/tasks/addons/main.yaml index b97989f2..d7811576 100644 --- a/bootstrap/tasks/addons/main.yaml +++ b/bootstrap/tasks/addons/main.yaml @@ -37,3 +37,7 @@ - name: Process addon discord-template-notifier when: discord_template_notifier.enabled | default(false) ansible.builtin.include_tasks: discord_template_notifier.yaml + +- name: Process addon volsync + when: volsync.enabled | default(false) + ansible.builtin.include_tasks: volsync.yaml diff --git a/bootstrap/tasks/addons/volsync.yaml b/bootstrap/tasks/addons/volsync.yaml new file mode 100644 index 00000000..aca00274 --- /dev/null +++ b/bootstrap/tasks/addons/volsync.yaml @@ -0,0 +1,34 @@ +--- +- name: Set addon facts + ansible.builtin.set_fact: + addon_name: volsync + addon_namespace: storage + +- name: Ensure directories exist for {{ addon_namespace }}/{{ addon_name }} + when: item.state == 'directory' + ansible.builtin.file: + path: "{{ repository_path }}/kubernetes/apps/{{ addon_namespace }}/{{ addon_name }}/{{ item.path }}" + state: directory + mode: "0755" + with_community.general.filetree: ["../templates/addons/{{ addon_name }}/"] + +- name: Template unencrypted files for {{ addon_namespace }}/{{ addon_name }} + when: item.state == 'file' and 'sops' not in item.path + ansible.builtin.template: + src: "{{ item.src }}" + dest: "{{ repository_path }}/kubernetes/apps/{{ addon_namespace }}/{{ addon_name }}/{{ item.path | replace('.j2', '') }}" + mode: "0644" + with_community.general.filetree: ["../templates/addons/{{ addon_name }}/"] + +- name: Template encrypted files for {{ addon_namespace }}/{{ addon_name }} + block: + - name: Template encrypted files + when: item.state == 'file' and 'sops' in item.path + community.sops.sops_encrypt: + path: "{{ repository_path }}/kubernetes/apps/{{ addon_namespace }}/{{ addon_name }}/{{ item.path | replace('.j2', '') }}" + encrypted_regex: ^(data|stringData)$ + age: ["{{ bootstrap_age_public_key }}"] + content_yaml: "{{ lookup('ansible.builtin.template', item.src) | from_yaml }}" + mode: "0644" + force: true + with_community.general.filetree: ["../templates/addons/{{ addon_name }}/"] diff --git a/bootstrap/templates/kubernetes/apps/storage/volsync/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/volsync/app/helmrelease.yaml.j2 similarity index 100% rename from bootstrap/templates/kubernetes/apps/storage/volsync/app/helmrelease.yaml.j2 rename to bootstrap/templates/addons/volsync/app/helmrelease.yaml.j2 diff --git a/bootstrap/templates/kubernetes/apps/storage/volsync/app/kustomization.yaml.j2 b/bootstrap/templates/addons/volsync/app/kustomization.yaml.j2 similarity index 100% rename from bootstrap/templates/kubernetes/apps/storage/volsync/app/kustomization.yaml.j2 rename to bootstrap/templates/addons/volsync/app/kustomization.yaml.j2 diff --git a/bootstrap/templates/kubernetes/apps/storage/volsync/app/prometheusrule.yaml.j2 b/bootstrap/templates/addons/volsync/app/prometheusrule.yaml.j2 similarity index 100% rename from bootstrap/templates/kubernetes/apps/storage/volsync/app/prometheusrule.yaml.j2 rename to bootstrap/templates/addons/volsync/app/prometheusrule.yaml.j2 diff --git a/bootstrap/templates/addons/volsync/ks.yaml.j2 b/bootstrap/templates/addons/volsync/ks.yaml.j2 new file mode 100644 index 00000000..7e4bfd1e --- /dev/null +++ b/bootstrap/templates/addons/volsync/ks.yaml.j2 @@ -0,0 +1,40 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app snapshot-controller + namespace: flux-system +spec: + targetNamespace: storage + commonMetadata: + labels: + app.kubernetes.io/name: *app + path: ./kubernetes/apps/storage/volsync/snapshot-controller + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: false + interval: 30m + retryInterval: 1m + timeout: 5m +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app volsync + namespace: flux-system +spec: + targetNamespace: storage + commonMetadata: + labels: + app.kubernetes.io/name: *app + path: ./kubernetes/apps/storage/volsync/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: false + interval: 30m + retryInterval: 1m + timeout: 5m diff --git a/bootstrap/templates/kubernetes/apps/storage/snapshot-controller/app/helmrelease.yaml.j2 b/bootstrap/templates/addons/volsync/snapshot-controller/helmrelease.yaml.j2 similarity index 100% rename from bootstrap/templates/kubernetes/apps/storage/snapshot-controller/app/helmrelease.yaml.j2 rename to bootstrap/templates/addons/volsync/snapshot-controller/helmrelease.yaml.j2 diff --git a/bootstrap/templates/kubernetes/apps/storage/snapshot-controller/app/kustomization.yaml.j2 b/bootstrap/templates/addons/volsync/snapshot-controller/kustomization.yaml.j2 similarity index 100% rename from bootstrap/templates/kubernetes/apps/storage/snapshot-controller/app/kustomization.yaml.j2 rename to bootstrap/templates/addons/volsync/snapshot-controller/kustomization.yaml.j2 diff --git a/bootstrap/templates/kubernetes/apps/storage/kustomization.yaml.j2 b/bootstrap/templates/kubernetes/apps/storage/kustomization.yaml.j2 index b896982e..73290f4d 100644 --- a/bootstrap/templates/kubernetes/apps/storage/kustomization.yaml.j2 +++ b/bootstrap/templates/kubernetes/apps/storage/kustomization.yaml.j2 @@ -5,8 +5,9 @@ kind: Kustomization resources: - ./namespace.yaml - ./openebs/ks.yaml - - ./snapshot-controller/ks.yaml + {% if volsync.enabled | default(false) %} - ./volsync/ks.yaml + {% endif %} {% if csi_driver_nfs.enabled | default(false) %} - ./csi-driver-nfs/ks.yaml {% endif %} diff --git a/bootstrap/templates/kubernetes/apps/storage/snapshot-controller/ks.yaml.j2 b/bootstrap/templates/kubernetes/apps/storage/snapshot-controller/ks.yaml.j2 deleted file mode 100644 index 0ef11576..00000000 --- a/bootstrap/templates/kubernetes/apps/storage/snapshot-controller/ks.yaml.j2 +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: kustomize.toolkit.fluxcd.io/v1 -kind: Kustomization -metadata: - name: &app snapshot-controller - namespace: flux-system -spec: - targetNamespace: storage - commonMetadata: - labels: - app.kubernetes.io/name: *app - path: ./kubernetes/apps/storage/snapshot-controller/app - prune: true - sourceRef: - kind: GitRepository - name: home-kubernetes - wait: false - interval: 30m - retryInterval: 1m - timeout: 5m diff --git a/bootstrap/templates/kubernetes/apps/storage/volsync/ks.yaml.j2 b/bootstrap/templates/kubernetes/apps/storage/volsync/ks.yaml.j2 deleted file mode 100644 index a881bd7d..00000000 --- a/bootstrap/templates/kubernetes/apps/storage/volsync/ks.yaml.j2 +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: kustomize.toolkit.fluxcd.io/v1 -kind: Kustomization -metadata: - name: &app volsync - namespace: flux-system -spec: - targetNamespace: storage - commonMetadata: - labels: - app.kubernetes.io/name: *app - path: ./kubernetes/apps/storage/volsync/app - prune: true - sourceRef: - kind: GitRepository - name: home-kubernetes - wait: false - interval: 30m - retryInterval: 1m - timeout: 5m diff --git a/bootstrap/vars/addons.sample.yaml b/bootstrap/vars/addons.sample.yaml index c60b7d13..c6a9a0cc 100644 --- a/bootstrap/vars/addons.sample.yaml +++ b/bootstrap/vars/addons.sample.yaml @@ -50,3 +50,7 @@ discord_template_notifier: # so it's easier to keep track of changes. enabled: false webhook_url: # Discord webhook url + +# https://github.com/backube/volsync +volsync: + enabled: false