Compare commits
	
		
			7 Commits
		
	
	
		
			Appliance.
			...
			a5248bd54c
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a5248bd54c | |||
| cbedc9679f | |||
| 740b6b3dc9 | |||
| 0ba87988bc | |||
| aa14a8a3a8 | |||
| 48c14afd0f | |||
| 2addda3f06 | 
							
								
								
									
										22
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								.drone.yml
									
									
									
									
									
								
							@@ -21,8 +21,8 @@ steps:
 | 
				
			|||||||
  - yamllint --version
 | 
					  - yamllint --version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Linting
 | 
					- name: Linting
 | 
				
			||||||
  depends_on:
 | 
					  # depends_on:
 | 
				
			||||||
  - Debugging information
 | 
					  # - Debugging information
 | 
				
			||||||
  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
					  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
				
			||||||
  pull: always
 | 
					  pull: always
 | 
				
			||||||
  commands:
 | 
					  commands:
 | 
				
			||||||
@@ -33,8 +33,8 @@ steps:
 | 
				
			|||||||
      scripts
 | 
					      scripts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Install Ansible Galaxy collections
 | 
					- name: Install Ansible Galaxy collections
 | 
				
			||||||
  depends_on:
 | 
					  # depends_on:
 | 
				
			||||||
  - Linting
 | 
					  # - Linting
 | 
				
			||||||
  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
					  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
				
			||||||
  pull: always
 | 
					  pull: always
 | 
				
			||||||
  commands:
 | 
					  commands:
 | 
				
			||||||
@@ -47,8 +47,8 @@ steps:
 | 
				
			|||||||
    path: /scratch
 | 
					    path: /scratch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Kubernetes Bootstrap Appliance
 | 
					- name: Kubernetes Bootstrap Appliance
 | 
				
			||||||
  depends_on:
 | 
					  # depends_on:
 | 
				
			||||||
  - Install Ansible Galaxy collections
 | 
					  # - Install Ansible Galaxy collections
 | 
				
			||||||
  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
					  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
				
			||||||
  pull: always
 | 
					  pull: always
 | 
				
			||||||
  commands:
 | 
					  commands:
 | 
				
			||||||
@@ -106,8 +106,8 @@ steps:
 | 
				
			|||||||
    path: /scratch
 | 
					    path: /scratch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Kubernetes Upgrade Appliance
 | 
					- name: Kubernetes Upgrade Appliance
 | 
				
			||||||
  depends_on:
 | 
					  # depends_on:
 | 
				
			||||||
  - Install Ansible Galaxy collections
 | 
					  # - Install Ansible Galaxy collections
 | 
				
			||||||
  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
					  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
				
			||||||
  pull: alwaysquery(
 | 
					  pull: alwaysquery(
 | 
				
			||||||
  commands:
 | 
					  commands:
 | 
				
			||||||
@@ -165,9 +165,9 @@ steps:
 | 
				
			|||||||
    path: /scratch
 | 
					    path: /scratch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Remove temporary resources
 | 
					- name: Remove temporary resources
 | 
				
			||||||
  depends_on:
 | 
					  # depends_on:
 | 
				
			||||||
  - Kubernetes Bootstrap Appliance
 | 
					  # - Kubernetes Bootstrap Appliance
 | 
				
			||||||
  - Kubernetes Upgrade Appliance
 | 
					  # - Kubernetes Upgrade Appliance
 | 
				
			||||||
  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
					  image: bv11-cr01.bessems.eu/library/packer-extended
 | 
				
			||||||
  commands:
 | 
					  commands:
 | 
				
			||||||
  - |
 | 
					  - |
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,14 +16,16 @@
 | 
				
			|||||||
            { 'components': (
 | 
					            { 'components': (
 | 
				
			||||||
              metacluster_chartvalues |
 | 
					              metacluster_chartvalues |
 | 
				
			||||||
              combine({ 'clusterapi': components.clusterapi }) |
 | 
					              combine({ 'clusterapi': components.clusterapi }) |
 | 
				
			||||||
              combine({ 'kubevip'   : components.kubevip }) )
 | 
					              combine({ 'kubevip'   : components.kubevip }) ),
 | 
				
			||||||
 | 
					              'appliance': {
 | 
				
			||||||
 | 
					                'version': (applianceversion)
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
            } | to_nice_yaml(indent=2, width=4096)
 | 
					            } | to_nice_yaml(indent=2, width=4096)
 | 
				
			||||||
          }}
 | 
					          }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    - name: Aggregate chart_values into dict
 | 
					    - name: Aggregate chart_values into dict
 | 
				
			||||||
      ansible.builtin.set_fact:
 | 
					      ansible.builtin.set_fact:
 | 
				
			||||||
        workloadcluster_chartvalues: "{{ workloadcluster_chartvalues | default({}) | combine({ item.key: { 'chart_values': (item.value.chart_values | default('') | from_yaml) } }) }}"
 | 
					        workloadcluster_chartvalues: "{{ workloadcluster_chartvalues | default({}) | combine({ item.key: { 'chart_values': (item.value.chart_values | default('') | from_yaml) } }) }}"
 | 
				
			||||||
      # when: item.value.chart_values is defined
 | 
					 | 
				
			||||||
      loop: "{{ query('ansible.builtin.dict', downstream.helm_charts) }}"
 | 
					      loop: "{{ query('ansible.builtin.dict', downstream.helm_charts) }}"
 | 
				
			||||||
      loop_control:
 | 
					      loop_control:
 | 
				
			||||||
        label: "{{ item.key }}"
 | 
					        label: "{{ item.key }}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					import netaddr
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def netaddr_iter_iprange(ip_start, ip_end):
 | 
				
			||||||
 | 
					    return [str(ip) for ip in netaddr.iter_iprange(ip_start, ip_end)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class FilterModule(object):
 | 
				
			||||||
 | 
					        ''' Ansible filter. Interface to netaddr methods.
 | 
				
			||||||
 | 
					            https://pypi.org/project/netaddr/
 | 
				
			||||||
 | 
					        '''
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        def filters(self):
 | 
				
			||||||
 | 
					            return {
 | 
				
			||||||
 | 
					                'netaddr_iter_iprange': netaddr_iter_iprange
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					- block:
 | 
				
			||||||
 | 
					    - name: Install json-server chart
 | 
				
			||||||
 | 
					      kubernetes.core.helm:
 | 
				
			||||||
 | 
					        name: json-server
 | 
				
			||||||
 | 
					        chart_ref: /opt/metacluster/helm-charts/json-server
 | 
				
			||||||
 | 
					        release_namespace: json-server
 | 
				
			||||||
 | 
					        create_namespace: true
 | 
				
			||||||
 | 
					        wait: false
 | 
				
			||||||
 | 
					        kubeconfig: "{{ kubeconfig.path }}"
 | 
				
			||||||
 | 
					        values: "{{ components['json-server'].chart_values }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    - name: Ensure json-server API availability
 | 
				
			||||||
 | 
					      ansible.builtin.uri:
 | 
				
			||||||
 | 
					        url: https://version.{{ vapp['metacluster.fqdn'] }}/healthz
 | 
				
			||||||
 | 
					        method: GET
 | 
				
			||||||
 | 
					      register: api_readycheck
 | 
				
			||||||
 | 
					      until:
 | 
				
			||||||
 | 
					        - api_readycheck.json.status is defined
 | 
				
			||||||
 | 
					        - api_readycheck.json.status == 'running'
 | 
				
			||||||
 | 
					      retries: "{{ playbook.retries }}"
 | 
				
			||||||
 | 
					      delay: "{{ (storage_benchmark | int) * (playbook.delay.long | int) }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  module_defaults:
 | 
				
			||||||
 | 
					    ansible.builtin.uri:
 | 
				
			||||||
 | 
					      validate_certs: no
 | 
				
			||||||
 | 
					      status_code: [200, 201]
 | 
				
			||||||
 | 
					      body_format: json
 | 
				
			||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
- import_tasks: init.yml
 | 
					- import_tasks: init.yml
 | 
				
			||||||
- import_tasks: k3s.yml
 | 
					- import_tasks: k3s.yml
 | 
				
			||||||
 | 
					- import_tasks: json-server.yml
 | 
				
			||||||
- import_tasks: assets.yml
 | 
					- import_tasks: assets.yml
 | 
				
			||||||
- import_tasks: kube-vip.yml
 | 
					- import_tasks: kube-vip.yml
 | 
				
			||||||
- import_tasks: storage.yml
 | 
					- import_tasks: storage.yml
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
platform:
 | 
					platform:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  k3s:
 | 
					  k3s:
 | 
				
			||||||
    version: v1.25.9+k3s1
 | 
					    version: v1.27.1+k3s1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  packaged_components:
 | 
					  packaged_components:
 | 
				
			||||||
    - name: traefik
 | 
					    - name: traefik
 | 
				
			||||||
@@ -51,6 +51,8 @@ platform:
 | 
				
			|||||||
      url: https://prometheus-community.github.io/helm-charts
 | 
					      url: https://prometheus-community.github.io/helm-charts
 | 
				
			||||||
    - name: smallstep
 | 
					    - name: smallstep
 | 
				
			||||||
      url: https://smallstep.github.io/helm-charts/
 | 
					      url: https://smallstep.github.io/helm-charts/
 | 
				
			||||||
 | 
					    - name: spamasaurus
 | 
				
			||||||
 | 
					      url: https://code.spamasaurus.com/api/packages/djpbessems/helm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
components:
 | 
					components:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -115,13 +117,13 @@ components:
 | 
				
			|||||||
        infrastructure_vsphere: v1.6.0
 | 
					        infrastructure_vsphere: v1.6.0
 | 
				
			||||||
        ipam_incluster: v0.1.0-alpha.2
 | 
					        ipam_incluster: v0.1.0-alpha.2
 | 
				
			||||||
        # Refer to `https://console.cloud.google.com/gcr/images/cloud-provider-vsphere/GLOBAL/cpi/release/manager` for available tags
 | 
					        # Refer to `https://console.cloud.google.com/gcr/images/cloud-provider-vsphere/GLOBAL/cpi/release/manager` for available tags
 | 
				
			||||||
        cpi_vsphere: v1.25.2
 | 
					        cpi_vsphere: v1.26.1
 | 
				
			||||||
    workload:
 | 
					    workload:
 | 
				
			||||||
      version:
 | 
					      version:
 | 
				
			||||||
        calico: v3.25.0
 | 
					        calico: v3.25.0
 | 
				
			||||||
        k8s: v1.25.10
 | 
					        k8s: v1.27.1
 | 
				
			||||||
      node_template:
 | 
					      node_template:
 | 
				
			||||||
        url: https://{{ repo_username }}:{{ repo_password }}@sn.itch.fyi/Repository/rel/ubuntu-2204-kube-v1.25.10.ova
 | 
					        url: https://{{ repo_username }}:{{ repo_password }}@sn.itch.fyi/Repository/rel/ubuntu-2204-kube-v1.27.1.ova
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # dex:
 | 
					  # dex:
 | 
				
			||||||
  #   helm:
 | 
					  #   helm:
 | 
				
			||||||
@@ -225,6 +227,34 @@ components:
 | 
				
			|||||||
            registry:
 | 
					            registry:
 | 
				
			||||||
              size: 25Gi
 | 
					              size: 25Gi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  json-server:
 | 
				
			||||||
 | 
					    helm:
 | 
				
			||||||
 | 
					      version: v0.5.1
 | 
				
			||||||
 | 
					      chart: spamasaurus/json-server
 | 
				
			||||||
 | 
					      parse_logic: helm template . | yq --no-doc eval '.. | .image? | select(.)' | sort -u | awk '!/ /'
 | 
				
			||||||
 | 
					      chart_values: !unsafe |
 | 
				
			||||||
 | 
					        ingress:
 | 
				
			||||||
 | 
					          enabled: true
 | 
				
			||||||
 | 
					          hosts:
 | 
				
			||||||
 | 
					            - host: version.{{ vapp['metacluster.fqdn'] }}
 | 
				
			||||||
 | 
					              paths:
 | 
				
			||||||
 | 
					                - path: /
 | 
				
			||||||
 | 
					                  pathType: Prefix
 | 
				
			||||||
 | 
					        seedData:
 | 
				
			||||||
 | 
					          configInline: |
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "appliance": { "version": "{{ appliance.version }}" },
 | 
				
			||||||
 | 
					              "components": [
 | 
				
			||||||
 | 
					                { "app": "argo-cd", "version": "{{ components[argo-cd].helm.version }}" },
 | 
				
			||||||
 | 
					                { "app": "cert-manager", "version": "{{ components[cert-manager].helm.version }}" },
 | 
				
			||||||
 | 
					                { "app": "cluster-api",
 | 
				
			||||||
 | 
					                  "management": { "foo": "bar" },
 | 
				
			||||||
 | 
					                  "workload": { "foo": "bar" }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					              "healthz": { "status": "running" }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # keycloakx:
 | 
					  # keycloakx:
 | 
				
			||||||
  #   helm:
 | 
					  #   helm:
 | 
				
			||||||
  #     version: 2.1.1  # (= Keycloak 20.0.3)
 | 
					  #     version: 2.1.1  # (= Keycloak 20.0.3)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@ build {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    extra_arguments  = [
 | 
					    extra_arguments  = [
 | 
				
			||||||
      "--extra-vars", "appliancetype=${source.name}",
 | 
					      "--extra-vars", "appliancetype=${source.name}",
 | 
				
			||||||
 | 
					      "--extra-vars", "applianceversion=${var.appliance_version}",
 | 
				
			||||||
      "--extra-vars", "ansible_ssh_pass=${var.ssh_password}",
 | 
					      "--extra-vars", "ansible_ssh_pass=${var.ssh_password}",
 | 
				
			||||||
      "--extra-vars", "docker_username=${var.docker_username}",
 | 
					      "--extra-vars", "docker_username=${var.docker_username}",
 | 
				
			||||||
      "--extra-vars", "docker_password=${var.docker_password}",
 | 
					      "--extra-vars", "docker_password=${var.docker_password}",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,4 +34,5 @@ variable "docker_password" {
 | 
				
			|||||||
    sensitive = true
 | 
					    sensitive = true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					variable "appliance_version" {}
 | 
				
			||||||
variable "k8s_version" {}
 | 
					variable "k8s_version" {}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user