Compare commits
	
		
			3 Commits
		
	
	
		
			20f28f7d8a
			...
			066a21b1d2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 066a21b1d2 | |||
| 46fe962e77 | |||
| 74070f266c | 
| @@ -8,6 +8,34 @@ | |||||||
|             combine( components['step-certificates'].chart_values | from_yaml, recursive=True, list_merge='append') |             combine( components['step-certificates'].chart_values | from_yaml, recursive=True, list_merge='append') | ||||||
|           }} |           }} | ||||||
|  |  | ||||||
|  |     - name: Duplicate default provisioner with modified claims | ||||||
|  |       ansible.builtin.set_fact: | ||||||
|  |         values_new: | | ||||||
|  |           {{ | ||||||
|  |             values_initial | | ||||||
|  |               combine({'inject':{'config':{'files':{'ca.json':{'authority': {'provisioners': [ | ||||||
|  |                 values_initial.inject.config.files['ca.json'].authority.provisioners[0] | combine({'name':'long-lived', 'claims':{'maxTLSCertDuration':'87660h'}}) | ||||||
|  |               ]}}}}}}, list_merge='append_rp', recursive=true) | ||||||
|  |           }} | ||||||
|  |  | ||||||
|  |     # We're facing several bugs or niche cases that result in incorrect output, despite being behaviour by design: | ||||||
|  |     # - Ansible's `to_yaml` filter, sees `\n` escape sequences in PEM certificate strings and correctly converts them to actual newlines - without any way to prevent this | ||||||
|  |     #   So we cannot rely on Ansible to (re)create the helm chart values file | ||||||
|  |     # - Python's yaml interpreter sees strings with a value of `y` as short for `yes` or `true`, even when that string is a key name. | ||||||
|  |     #   So we cannot use a straightforward yaml document as input for the Ansible helm module (which is written in Python) | ||||||
|  |     # | ||||||
|  |     # Lets explain the following workaround steps: | ||||||
|  |     # - First we convert the dictionary to a json-object (through Ansible), so that yq can read it | ||||||
|  |     # - Second we convert the json-object in its entirety to yaml (through yq), so that yq can actually manipulate it. | ||||||
|  |     # - Finally, we take one specific subkey's contents (list of dictionaries) and iterate over each with the following steps (with `map`): | ||||||
|  |     #   - Convert the dictionary to json with `tojson` | ||||||
|  |     #   - Remove newlines (and spaces) with `sub` | ||||||
|  |     #   - Remove outer quotes (') with `sed` | ||||||
|  |     - name: Save updated values file | ||||||
|  |       ansible.builtin.shell: | ||||||
|  |         cmd: | | ||||||
|  |           echo '{{ values_new | to_nice_json }}' | yq -p json -o yaml | yq e '.inject.config.files["ca.json"].authority.provisioners |= map(tojson | sub("[\n ]";""))' | sed -e "s/- '/- /;s/'$//" > {{ stepconfig.path }} | ||||||
|  |  | ||||||
|     - name: Install step-ca chart |     - name: Install step-ca chart | ||||||
|       kubernetes.core.helm: |       kubernetes.core.helm: | ||||||
|         name: step-certificates |         name: step-certificates | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| - import_tasks: init.yml | - import_tasks: init.yml | ||||||
| - import_tasks: k3s.yml | - import_tasks: k3s.yml | ||||||
| - import_tasks: assets.yml | - import_tasks: assets.yml | ||||||
|  | - import_tasks: workflow.yml | ||||||
| - import_tasks: virtualip.yml | - import_tasks: virtualip.yml | ||||||
| - import_tasks: metadata.yml | - import_tasks: metadata.yml | ||||||
| - import_tasks: storage.yml | - import_tasks: storage.yml | ||||||
|   | |||||||
| @@ -0,0 +1,20 @@ | |||||||
|  | - block: | ||||||
|  |  | ||||||
|  |     - name: Install argo-workflows chart | ||||||
|  |       kubernetes.core.helm: | ||||||
|  |         name: argo-workflows | ||||||
|  |         chart_ref: /opt/metacluster/helm-charts/argo-workflows | ||||||
|  |         release_namespace: argo-workflows | ||||||
|  |         create_namespace: true | ||||||
|  |         wait: false | ||||||
|  |         kubeconfig: "{{ kubeconfig.path }}" | ||||||
|  |         values: "{{ components['argo-workflows'].chart_values }}" | ||||||
|  |  | ||||||
|  |     # - name: Trigger handlers | ||||||
|  |     #   ansible.builtin.meta: flush_handlers | ||||||
|  |  | ||||||
|  |   module_defaults: | ||||||
|  |     ansible.builtin.uri: | ||||||
|  |       validate_certs: no | ||||||
|  |       status_code: [200, 201] | ||||||
|  |       body_format: json | ||||||
| @@ -127,8 +127,8 @@ | |||||||
|     wait: true |     wait: true | ||||||
|     kubeconfig: "{{ kubeconfig.path }}" |     kubeconfig: "{{ kubeconfig.path }}" | ||||||
|   loop: |   loop: | ||||||
|     - name: caip-in-cluster-controller-manager |     - name: capi-ipam-in-cluster-controller-manager | ||||||
|       namespace: caip-in-cluster-system |       namespace: capi-ipam-in-cluster-system | ||||||
|     - name: capi-controller-manager |     - name: capi-controller-manager | ||||||
|       namespace: capi-system |       namespace: capi-system | ||||||
|     - name: capv-controller-manager |     - name: capv-controller-manager | ||||||
|   | |||||||
| @@ -58,7 +58,7 @@ components: | |||||||
|  |  | ||||||
|   argo-cd: |   argo-cd: | ||||||
|     helm: |     helm: | ||||||
|       version: 6.7.7  # (=ArgoCD v.2.10.5) |       version: 6.7.7  # (=Argo CD v2.10.5) | ||||||
|       chart: argo/argo-cd |       chart: argo/argo-cd | ||||||
|       parse_logic: helm template . | yq --no-doc eval '.. | .image? | select(.)' | sort -u | awk '!/ /' |       parse_logic: helm template . | yq --no-doc eval '.. | .image? | select(.)' | sort -u | awk '!/ /' | ||||||
|       chart_values: !unsafe | |       chart_values: !unsafe | | ||||||
| @@ -79,6 +79,25 @@ components: | |||||||
|           ingress: |           ingress: | ||||||
|             enabled: true |             enabled: true | ||||||
|  |  | ||||||
|  |   argo-workflows: | ||||||
|  |     helm: | ||||||
|  |       version: 0.41.8  # (=Argo Workflows v3.5.7) | ||||||
|  |       chart: argo/argo-workflows | ||||||
|  |       parse_logic: helm template . | yq --no-doc eval '.. | .image? | select(.)' | sort -u | awk '!/ /' | ||||||
|  |       chart_values: !unsafe | | ||||||
|  |         controller: | ||||||
|  |           workflowNamespaces: | ||||||
|  |             - default | ||||||
|  |             - firstboot | ||||||
|  |         server: | ||||||
|  |           ingress: | ||||||
|  |             enabled: true | ||||||
|  |             hosts: | ||||||
|  |               - workflow.{{ vapp['workloadcluster.fqdn']}} | ||||||
|  |             paths: | ||||||
|  |               - / | ||||||
|  |             pathType: Prefix | ||||||
|  |  | ||||||
|   cert-manager: |   cert-manager: | ||||||
|     helm: |     helm: | ||||||
|       version: 1.14.4 |       version: 1.14.4 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user