From 5fc9e3233ac6e557d63165dc545ed92fe9048bb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=B6rz=2C=20Friedrich?= Date: Tue, 15 Feb 2022 10:14:04 +0000 Subject: [PATCH] DEV-322: enable ApplicationSet CRD for argoCD; added mechanism to apply defined argocd CRD-objects --- roles/kubernetes/apps/defaults/main.yml | 49 +++++++++++++++++++++ roles/kubernetes/apps/tasks/argocd.yml | 58 +++++++++++++++++++++++++ 2 files changed, 107 insertions(+) diff --git a/roles/kubernetes/apps/defaults/main.yml b/roles/kubernetes/apps/defaults/main.yml index c05a443..1018d48 100644 --- a/roles/kubernetes/apps/defaults/main.yml +++ b/roles/kubernetes/apps/defaults/main.yml @@ -173,6 +173,53 @@ k8s_argocd_helm__release_values: - secretName: "{{ stage }}-kube-argocd-cert" hosts: - "{{ k8s_argocd_helm__domain }}" + additionalProjects: + - name: infrastructure + namespace: '{{ k8s_argocd_helm__release_namespace }}' + additionalLabels: {} + additionalAnnotations: {} + description: apps needed for maintaining stuff + sourceRepos: + - '*' + destinations: + - namespace: '*' + server: https://kubernetes.default.svc + clusterResourceWhitelist: + - group: '*' + kind: '*' + orphanedResources: + warn: false + additionalApplications: + - + name: awx + namespace: '{{ k8s_argocd_helm__release_namespace }}' + destination: + namespace: awx + server: https://kubernetes.default.svc + project: infrastructure + source: + path: apps/awx + repoURL: https://dev-gitea-01.smardigo.digital/gitea-admin/argocd.git + targetRevision: HEAD + syncPolicy: + automated: {} + syncOptions: + - CreateNamespace=true + - + name: guestbook + namespace: '{{ k8s_argocd_helm__release_namespace }}' + destination: + namespace: guestbook + server: https://kubernetes.default.svc + project: infrastructure + source: + path: apps/guestbook + repoURL: https://dev-gitea-01.smardigo.digital/gitea-admin/argocd.git + targetRevision: HEAD + syncPolicy: + automated: {} + syncOptions: + - CreateNamespace=true dex: enabled: false redis: @@ -186,3 +233,5 @@ k8s_argocd_helm__release_values: configs: secret: argocdServerAdminPassword: '{{ argocd_server_admin_password | password_hash("bcrypt") }}' + +k8s_argocd__crd_applicationset_version: v0.4.0 diff --git a/roles/kubernetes/apps/tasks/argocd.yml b/roles/kubernetes/apps/tasks/argocd.yml index d027adf..076583c 100644 --- a/roles/kubernetes/apps/tasks/argocd.yml +++ b/roles/kubernetes/apps/tasks/argocd.yml @@ -190,3 +190,61 @@ release_values: "{{ combined_helm__release_values }}" when: - inventory_hostname == groups['kube_control_plane'][0] + +- name: Download argo-cd ApplicationSet CRD + get_url: + url: 'https://raw.githubusercontent.com/argoproj/applicationset/{{ k8s_argocd__crd_applicationset_version }}/manifests/install.yaml' + dest: '/tmp/argocd_ApplicationSet_install_{{ k8s_argocd__crd_applicationset_version }}.yml' + mode: '0440' + when: + - inventory_hostname == groups['kube_control_plane'][0] + +- name: Deploy argo-cd ApplicationSet CRD + kubernetes.core.k8s: + state: present + namespace: '{{ k8s_argocd_helm__release_namespace }}' + src: '/tmp/argocd_ApplicationSet_install_{{ k8s_argocd__crd_applicationset_version }}.yml' + when: + - inventory_hostname == groups['kube_control_plane'][0] + +#- name: Checkout defined argocd-related objects +# ansible.builtin.git: +# repo: 'https://{{ gitea_admin_username }}:{{ gitea_admin_password }}@dev-gitea-01.smardigo.digital/gitea-admin/argocd.git' +# dest: '/tmp/gitrepo' +# version: master +# when: +# - inventory_hostname == groups['kube_control_plane'][0] +# +#- name: Find file with definition of argocd-AppProjects +# find: +# paths: '/tmp/gitrepo/AppProjects' +# pattern: '*.yml' +# register: appprojects +# when: +# - inventory_hostname == groups['kube_control_plane'][0] +# +#- name: Find file with definition of argocd-ApplicationSets +# find: +# paths: '/tmp/gitrepo/ApplicationSets' +# pattern: '*.yml' +# register: applicationsets +# when: +# - inventory_hostname == groups['kube_control_plane'][0] +# +#- name: Apply defined AppProjects defined in checked out repo +# kubernetes.core.k8s: +# state: present +# namespace: '{{ k8s_argocd_helm__release_namespace }}' +# src: '{{ item.path }}' +# loop: '{{ appprojects.files }}' +# when: +# - inventory_hostname == groups['kube_control_plane'][0] +# +#- name: Apply defined ApplicationSets defined in checked out repo +# kubernetes.core.k8s: +# state: present +# namespace: '{{ k8s_argocd_helm__release_namespace }}' +# src: '{{ item.path }}' +# loop: '{{ applicationsets.files }}' +# when: +# - inventory_hostname == groups['kube_control_plane'][0]