local FLEET_REPO_URL="${20:-"${FLEET_REPO_URL}"}"
local SW_CATALOGS_REPO_DIR="${21:-"${SW_CATALOGS_REPO_DIR}"}"
local SW_CATALOGS_REPO_URL="${22:-"${SW_CATALOGS_REPO_URL}"}"
- local SKIP_BOOTSTRAP="${23:-"true"}"
+ local SKIP_BOOTSTRAP="${23:-"false"}"
# Only change if absolutely needeed
local MGMT_PROJECT_NAME="${24:-"osm_admin"}"
# Determine key folders in Fleet
local MGMT_RESOURCES_DIR="${FLEET_REPO_DIR}/${MGMT_PROJECT_NAME}/managed-resources/${MGMT_CLUSTER_NAME}"
+ # Updating no new cluster
+ local SKIP_BOOTSTRAP="true"
create_openshift_cluster \
"${CLUSTER_KUSTOMIZATION_NAME}" \
value: ""
- name: capo_resources_namespace
value: "managed-resources"
+ ## Do we want to skip OSM's bootstrap?
+ - name: skip_bootstrap
+ value: "false"
# Other parameters - Recommended to keep defaults
- name: mgmt_cluster_name
value: "_management"
# fsGroup: 10000
- # Create a PaaS Openshift cluster using ACM
- - name: create-openshift-cluster
- inputs:
- parameters:
- # Volumes with cloned repos
- - name: fleet_volume_name
- - name: fleet_mount_path
- value: "/fleet"
- - name: sw_catalogs_volume_name
- - name: sw_catalogs_mount_path
- value: "/sw-catalogs"
- # Specific parameters
- - name: cluster_kustomization_name
- - name: cluster_name
- - name: vm_size
- - name: node_count
- - name: k8s_version
- - name: providerconfig_name
- - name: public_key_mgmt
- - name: public_key_new_cluster
- - name: secret_name_private_age_key_for_new_cluster
- - name: key_name_in_secret
- value: "agekey"
- - name: fleet_repo_url
- - name: sw_catalogs_repo_url
- - name: mgmt_project_name
- value: "osm_admin"
- ## Openshift specific parameters
- - name: openshift_release
- - name: infra_public_ssh_key
- - name: control_plane_availability
- - name: worker_cpu
- - name: worker_memory
- - name: worker_volume_size
- - name: worker_storage_class
- - name: base_domain
- - name: mgmt_cluster_name
- - name: hosted_clusters_project
- - name: etcd_volume_size
- ## Do we want to skip OSM's bootstrap?
- - name: skip_bootstrap
- value: "false"
- # Other parameters - Recommended to keep defaults
- - name: base_templates_path
- value: "cloud-resources/capi"
- - name: cloned_fleet_folder_name
- value: "fleet-osm"
- - name: cloned_sw_catalogs_folder_name
- value: "sw-catalogs-osm"
- # Debug?
- - name: debug
- value: "false"
-
- container:
- image: opensourcemano/osm-krm-functions:testing-daily
- # imagePullPolicy: Always
- env:
- - name: PRIVATE_KEY_NEW_CLUSTER
- valueFrom:
- secretKeyRef:
- name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
- key: "{{inputs.parameters.key_name_in_secret}}"
- - name: DEBUG
- value: "{{inputs.parameters.debug}}"
- command: ["/app/scripts/entrypoint.sh"]
- args:
- - create_openshift_cluster
- - "{{inputs.parameters.cluster_kustomization_name}}"
- - "{{inputs.parameters.cluster_name}}"
- - "{{inputs.parameters.k8s_version}}"
- - "{{inputs.parameters.public_key_mgmt}}"
- - "{{inputs.parameters.public_key_new_cluster}}"
- - ''
- - "{{inputs.parameters.openshift_release}}"
- - "{{inputs.parameters.infra_public_ssh_key}}"
- - "{{inputs.parameters.control_plane_availability}}"
- - "{{inputs.parameters.node_count}}"
- - "{{inputs.parameters.worker_cpu}}"
- - "{{inputs.parameters.worker_memory}}"
- - "{{inputs.parameters.worker_volume_size}}"
- - "{{inputs.parameters.worker.storage_class}}"
- - "{{inputs.parameters.base_domain}}"
- - "{{inputs.parameters.mgmt_cluster_name}}"
- - "{{inputs.parameters.hosted_clusters_project}}"
- - "{{inputs.parameters.etcd_volume_size}}"
- - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
- - "{{inputs.parameters.fleet_repo_url}}"
- - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
- - "{{inputs.parameters.sw_catalogs_repo_url}}"
- - "{{inputs.parameters.skip_bootstrap}}"
- - "{{inputs.parameters.mgmt_project_name}}"
- - "{{inputs.parameters.base_templates_path}}"
- - ''
- - ''
-
- volumeMounts:
- - name: fleet-repo-volume
- mountPath: '{{inputs.parameters.fleet_mount_path}}'
- - name: sw-catalogs-repo-volume
- mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
- volumes:
- - name: fleet-repo-volume
- persistentVolumeClaim:
- claimName: '{{inputs.parameters.fleet_volume_name}}'
- - name: sw-catalogs-repo-volume
- persistentVolumeClaim:
- claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
- securityContext:
- runAsUser: 10000
- # runAsGroup: 10000
- # fsGroup: 10000
-
-
- # Update a PaaS cluster created using CAPI (Openstack)
- - name: update-openshift-cluster
- inputs:
- parameters:
- # Volumes with cloned repos
- - name: fleet_volume_name
- - name: fleet_mount_path
- value: "/fleet"
- - name: sw_catalogs_volume_name
- - name: sw_catalogs_mount_path
- value: "/sw-catalogs"
- # Specific parameters
- - name: cluster_kustomization_name
- - name: cluster_name
- - name: vm_size
- - name: node_count
- - name: k8s_version
- - name: providerconfig_name
- - name: public_key_mgmt
- - name: public_key_new_cluster
- - name: secret_name_private_age_key_for_new_cluster
- - name: key_name_in_secret
- value: "agekey"
- - name: fleet_repo_url
- - name: sw_catalogs_repo_url
- - name: mgmt_project_name
- value: "osm_admin"
- ## Openshift specific parameters
- - name: openshift_release
- - name: infra_public_ssh_key
- - name: control_plane_availability
- - name: worker_cpu
- - name: worker_memory
- - name: worker_volume_size
- - name: worker_storage_class
- - name: base_domain
- - name: mgmt_cluster_name
- - name: hosted_clusters_project
- - name: etcd_volume_size
- # Other parameters - Recommended to keep defaults
- - name: base_templates_path
- value: "cloud-resources/capi"
- - name: cloned_fleet_folder_name
- value: "fleet-osm"
- - name: cloned_sw_catalogs_folder_name
- value: "sw-catalogs-osm"
- # Debug?
- - name: debug
- value: "false"
-
- container:
- image: opensourcemano/osm-krm-functions:testing-daily
- # imagePullPolicy: Always
- env:
- - name: PRIVATE_KEY_NEW_CLUSTER
- valueFrom:
- secretKeyRef:
- name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
- key: "{{inputs.parameters.key_name_in_secret}}"
- - name: DEBUG
- value: "{{inputs.parameters.debug}}"
- command: ["/app/scripts/entrypoint.sh"]
- args:
- - update_openshift_cluster
- - "{{inputs.parameters.cluster_kustomization_name}}"
- - "{{inputs.parameters.cluster_name}}"
- - "{{inputs.parameters.k8s_version}}"
- - "{{inputs.parameters.public_key_mgmt}}"
- - "{{inputs.parameters.public_key_new_cluster}}"
- - ''
- - "{{inputs.parameters.openshift_release}}"
- - "{{inputs.parameters.infra_public_ssh_key}}"
- - "{{inputs.parameters.control_plane_availability}}"
- - "{{inputs.parameters.node_count}}"
- - "{{inputs.parameters.worker_cpu}}"
- - "{{inputs.parameters.worker_memory}}"
- - "{{inputs.parameters.worker_volume_size}}"
- - "{{inputs.parameters.worker.storage_class}}"
- - "{{inputs.parameters.base_domain}}"
- - "{{inputs.parameters.mgmt_cluster_name}}"
- - "{{inputs.parameters.hosted_clusters_project}}"
- - "{{inputs.parameters.etcd_volume_size}}"
- - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
- - "{{inputs.parameters.fleet_repo_url}}"
- - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
- - "{{inputs.parameters.sw_catalogs_repo_url}}"
- ## Note that during upgrades, OSM's bootstrap is avoided:
- - "true"
- - "{{inputs.parameters.mgmt_project_name}}"
- - "{{inputs.parameters.base_templates_path}}"
- - ''
- - ''
- volumeMounts:
- - name: fleet-repo-volume
- mountPath: '{{inputs.parameters.fleet_mount_path}}'
- - name: sw-catalogs-repo-volume
- mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
- volumes:
- - name: fleet-repo-volume
- persistentVolumeClaim:
- claimName: '{{inputs.parameters.fleet_volume_name}}'
- - name: sw-catalogs-repo-volume
- persistentVolumeClaim:
- claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
- securityContext:
- runAsUser: 10000
- # runAsGroup: 10000
- # fsGroup: 10000
-
-
# Bootstrap remote cluster running in **ANY cloud**
- name: bootstrap-remote-cluster
inputs:
value: "/fleet/fleet-osm/"
- name: mgmt_resources_dir
value: "{{inputs.parameters.fleet_repo_dir}}/{{inputs.parameters.project_name}}/managed-resources/_management"
- - name: mgmt_cluster_name
- value: "{{inputs.parameters.mgmt_cluster_name}}"
container:
image: opensourcemano/osm-krm-functions:testing-daily
- "{{inputs.parameters.project_name}}"
- "{{inputs.parameters.fleet_repo_dir}}"
- "{{inputs.parameters.mgmt_resources_dir}}"
- - "{{inputs.parameters.mgmt_cluster_name}}"
volumeMounts:
- name: fleet-repo-volume
- name: cluster_kustomization_name
- name: project_name
value: "osm_admin"
- - name: mgmt_cluster_name
- value: "{{inputs.parameters.mgmt_cluster_name}}"
# Is a purge needed before deleting?
- name: purge
- "{{inputs.parameters.project_name}}"
- "{{inputs.parameters.fleet_repo_dir}}"
- "{{inputs.parameters.mgmt_resources_dir}}"
- - "{{inputs.parameters.mgmt_cluster_name}}"
- ''
- ''
- ''
+++ /dev/null
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-
-apiVersion: argoproj.io/v1alpha1
-kind: WorkflowTemplate
-metadata:
- name: full-create-openshift-cluster-and-bootstrap-wft
- namespace: osm-workflows
-
-spec:
- arguments:
- parameters:
-
- # Fleet repo
- - name: git_fleet_url
- - name: fleet_destination_folder
- - name: git_fleet_cred_secret
-
- # SW-Catalogs repo
- - name: git_sw_catalogs_url
- - name: sw_catalogs_destination_folder
- - name: git_sw_catalogs_cred_secret
-
- # Specific parameters - Generic cluster creation
- - name: cluster_kustomization_name
- - name: cluster_name
- - name: providerconfig_name
- - name: vm_size
- - name: node_count
- - name: k8s_version
-
- ## Specific parameters - Openshift
- - name: control_plane_vm_size
- - name: control_plane_node_count
- - name: openstack_dns_nameservers
- - name: openstack_external_network_id
- - name: openstack_failure_domain
- - name: openstack_ssh_key_name
- - name: cluster_cni
- - name: openstack_worker_image_name
- - name: openstack_control_plane_image_name
- - name: capo_resources_namespace
-
- # Specific parameters - Bootstrap and credentials
- - name: public_key_mgmt
- - name: public_key_new_cluster
- - name: secret_name_private_age_key_for_new_cluster
- - name: key_name_in_secret
- value: "agekey"
- # Using `git_fleet_url` instead:
- # - name: fleet_repo_url
- # Using `git_sw_catalogs_url` instead:
- # - name: sw_catalogs_repo_url
- - name: mgmt_project_name
- value: "osm_admin"
-
- # Advanced parameters - Recommended to keep defaults
- - name: skip_bootstrap
- value: "false"
- - name: mgmt_cluster_name
- value: "_management"
- - name: base_templates_path
- value: "cloud-resources/capi"
- - name: cloned_fleet_folder_name
- value: "fleet-osm"
- - name: cloned_sw_catalogs_folder_name
- value: "sw-catalogs-osm"
-
- # Debug/dry run?
- - name: debug
- value: "false"
- - name: dry_run
- value: "false"
-
-
- # # Cleanup policy
- # ttlStrategy:
- # secondsAfterCompletion: 100 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished
- # secondsAfterSuccess: 50 # Time to live after workflow is successful
- # secondsAfterFailure: 50 # Time to live after workflow fails
-
- entrypoint: create-cluster-and-bootstrap
-
- templates:
- # Main template
- - name: create-cluster-and-bootstrap
- inputs:
- parameters:
- # Fleet repo
- - name: git_fleet_url
- - name: fleet_destination_folder
- - name: git_fleet_cred_secret
- # SW-Catalogs repo
- - name: git_sw_catalogs_url
- - name: sw_catalogs_destination_folder
- - name: git_sw_catalogs_cred_secret
- # Specific parameters
- - name: cluster_kustomization_name
- - name: cluster_name
- - name: providerconfig_name
- - name: vm_size
- - name: node_count
- - name: k8s_version
- - name: public_key_mgmt
- - name: public_key_new_cluster
- - name: secret_name_private_age_key_for_new_cluster
- - name: key_name_in_secret
- ## Openshift specific parameters
- - name: control_plane_vm_size
- - name: control_plane_node_count
- - name: openstack_dns_nameservers
- - name: openstack_external_network_id
- - name: openstack_failure_domain
- - name: openstack_ssh_key_name
- - name: cluster_cni
- - name: openstack_worker_image_name
- - name: openstack_control_plane_image_name
- - name: capo_resources_namespace
- # Other parameters - Recommended to keep defaults
- # - name: fleet_repo_url
- # - name: sw_catalogs_repo_url
- - name: mgmt_project_name
- - name: skip_bootstrap
- - name: mgmt_cluster_name
- - name: base_templates_path
- - name: cloned_fleet_folder_name
- - name: cloned_sw_catalogs_folder_name
- ## EKS only (otherwise, ignored)
- - name: cluster_iam_role
- - name: cluster_private_subnets_id
- - name: cluster_public_subnets_id
- - name: cluster_subnets_configmap_name
- # Debug/dry run?
- - name: debug
- - name: dry_run
-
- steps:
- # ------ Preparations for transaction
- - - name: generate-fleet-volume-repo
- templateRef:
- name: k8s-resources-wft
- template: generate-volume
- arguments:
- parameters:
- - name: pvc-size
- value: '100Mi'
- - name: generate-sw-catalogs-volume-repo
- templateRef:
- name: k8s-resources-wft
- template: generate-volume
- arguments:
- parameters:
- - name: pvc-size
- value: '100Mi'
- - - name: clone-fleet
- templateRef:
- name: git-wft
- template: git-clone
- arguments:
- parameters:
- - name: mount_path
- value: "/fleet"
- - name: repo_url
- value: "{{inputs.parameters.git_fleet_url}}"
- - name: destination_folder
- value: "{{inputs.parameters.fleet_destination_folder}}"
- - name: git_cred_secret
- value: "{{inputs.parameters.git_fleet_cred_secret}}"
- - name: git_volume_name
- value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
- - name: clone-sw-catalogs
- templateRef:
- name: git-wft
- template: git-clone
- arguments:
- parameters:
- - name: mount_path
- value: "/sw-catalogs"
- - name: repo_url
- value: "{{inputs.parameters.git_sw_catalogs_url}}"
- - name: destination_folder
- value: "{{inputs.parameters.sw_catalogs_destination_folder}}"
- - name: git_cred_secret
- value: "{{inputs.parameters.git_sw_catalogs_cred_secret}}"
- - name: git_volume_name
- value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
- # ------ end of preparations for transaction
-
- # ------ Transformations
- # Create CAPI cluster in cloud (Openstack)
- - - name: create-cluster
- templateRef:
- name: cluster-management-wft
- template: create-capi-openstack-cluster
- arguments:
- parameters:
- # Volumes with cloned repos
- - name: fleet_volume_name
- value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
- - name: fleet_mount_path
- value: "/fleet"
- - name: sw_catalogs_volume_name
- value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
- - name: sw_catalogs_mount_path
- value: "/sw-catalogs"
- # Specific parameters
- - name: cluster_kustomization_name
- value: "{{inputs.parameters.cluster_kustomization_name}}"
- - name: cluster_name
- value: "{{inputs.parameters.cluster_name}}"
- - name: vm_size
- value: "{{inputs.parameters.vm_size}}"
- - name: node_count
- value: "{{inputs.parameters.node_count}}"
- - name: k8s_version
- value: "{{inputs.parameters.k8s_version}}"
- - name: providerconfig_name
- value: "{{inputs.parameters.providerconfig_name}}"
- - name: public_key_mgmt
- value: "{{inputs.parameters.public_key_mgmt}}"
- - name: public_key_new_cluster
- value: "{{inputs.parameters.public_key_new_cluster}}"
- - name: secret_name_private_age_key_for_new_cluster
- value: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
- - name: key_name_in_secret
- value: "{{inputs.parameters.key_name_in_secret}}"
- ## CAPI and CAPI Openstack specific parameters
- - name: control_plane_vm_size
- value: "{{inputs.parameters.control_plane_vm_size}}"
- - name: control_plane_node_count
- value: "{{inputs.parameters.control_plane_node_count}}"
- - name: openstack_dns_nameservers
- value: "{{inputs.parameters.openstack_dns_nameservers}}"
- - name: openstack_external_network_id
- value: "{{inputs.parameters.openstack_external_network_id}}"
- - name: openstack_failure_domain
- value: "{{inputs.parameters.openstack_failure_domain}}"
- - name: openstack_ssh_key_name
- value: "{{inputs.parameters.openstack_ssh_key_name}}"
- - name: cluster_cni
- value: "{{inputs.parameters.cluster_cni}}"
- - name: openstack_worker_image_name
- value: "{{inputs.parameters.openstack_worker_image_name}}"
- - name: openstack_control_plane_image_name
- value: "{{inputs.parameters.openstack_control_plane_image_name}}"
- - name: capo_resources_namespace
- value: "{{inputs.parameters.capo_resources_namespace}}"
- ## Fed with `git_fleet_url` to avoid duplicates
- - name: fleet_repo_url
- value: "{{inputs.parameters.git_fleet_url}}"
- ## Fed with `git_sw_catalogs_url` to avoid duplicates
- - name: sw_catalogs_repo_url
- value: "{{inputs.parameters.git_sw_catalogs_url}}"
- - name: mgmt_project_name
- value: "{{inputs.parameters.mgmt_project_name}}"
- - name: skip_bootstrap
- value: "{{inputs.parameters.skip_bootstrap}}"
- # Other parameters - Recommended to keep defaults
- - name: mgmt_cluster_name
- value: "{{inputs.parameters.mgmt_cluster_name}}"
- - name: base_templates_path
- value: "{{inputs.parameters.base_templates_path}}"
- - name: cloned_fleet_folder_name
- value: "{{inputs.parameters.cloned_fleet_folder_name}}"
- - name: cloned_sw_catalogs_folder_name
- value: "{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
- # Debug?
- - name: debug
- value: "{{inputs.parameters.debug}}"
- # ------ end of transformations
-
- # ------ Commit transaction
- - - name: push-to-fleet
- templateRef:
- name: git-wft
- template: git-commit-merge-push
- arguments:
- parameters:
- - name: mount_path
- value: "/fleet"
- - name: repo_folder
- value: "{{inputs.parameters.fleet_destination_folder}}"
- - name: git_cred_secret
- value: "{{inputs.parameters.git_fleet_cred_secret}}"
- - name: git_volume_name
- value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
- - name: commit_message
- value: "Create CAPI Openstack cluster {{inputs.parameters.cluster_kustomization_name}} at {{inputs.parameters.providerconfig_name}}"
- - name: main_branch
- value: main
- - name: contrib_branch
- value: osm_contrib
- - name: dry_run
- value: "{{inputs.parameters.dry_run}}"
-# ------ end of commit transaction
-
- name: cluster_kustomization_name
- name: project_name
value: "osm_admin"
- - name: mgmt_cluster_name
- value: ""
# Debugging
- name: dry_run
# Specific parameters
- name: cluster_kustomization_name
- name: project_name
- - name: mgmt_cluster_name
# Debugging
- name: dry_run
value: "{{inputs.parameters.cluster_kustomization_name}}"
- name: project_name
value: "{{inputs.parameters.project_name}}"
- - name: mgmt_cluster_name
- value: "{{inputs.parameters.mgmt_cluster_name}}"
# ------ end of transformations
# ------ Commit transaction
- name: project_name
value: "osm_admin"
- name: temp_kubeconfig_secret_name
- - name: mgmt_cluster_name
- value: ""
- name: purge
value: "true"
# Specific parameters
- name: cluster_kustomization_name
- name: project_name
- - name: temp_kubeconfig_secret_name
- - name: mgmt_cluster_name
- name: purge
+ - name: temp_kubeconfig_secret_name
# Debugging
- name: dry_run
value: "{{inputs.parameters.cluster_kustomization_name}}"
- name: project_name
value: "{{inputs.parameters.project_name}}"
- - name: mgmt_cluster_name
- value: "{{inputs.parameters.mgmt_cluster_name}}"
- name: purge
value: "{{inputs.parameters.purge}}"
- name: temp_kubeconfig_secret_name
+++ /dev/null
-#######################################################################################
-# Copyright ETSI Contributors and Others.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#######################################################################################
-
-apiVersion: argoproj.io/v1alpha1
-kind: WorkflowTemplate
-metadata:
- name: full-update-capi-cluster-and-bootstrap-wft
- namespace: osm-workflows
-
-spec:
- arguments:
- parameters:
-
- # Fleet repo
- - name: git_fleet_url
- - name: fleet_destination_folder
- - name: git_fleet_cred_secret
-
- # SW-Catalogs repo
- - name: git_sw_catalogs_url
- - name: sw_catalogs_destination_folder
- - name: git_sw_catalogs_cred_secret
-
- # Specific parameters - Generic cluster creation
- - name: cluster_kustomization_name
- - name: cluster_name
- - name: providerconfig_name
- - name: vm_size
- - name: node_count
- - name: k8s_version
-
- ## Specific parameters - CAPI and CAPI Openstack
- - name: control_plane_vm_size
- - name: control_plane_node_count
- - name: openstack_dns_nameservers
- - name: openstack_external_network_id
- - name: openstack_failure_domain
- - name: openstack_ssh_key_name
- - name: cluster_cni
- - name: openstack_worker_image_name
- - name: openstack_control_plane_image_name
- - name: capo_resources_namespace
-
- # Specific parameters - Bootstrap and credentials
- - name: public_key_mgmt
- - name: public_key_new_cluster
- - name: secret_name_private_age_key_for_new_cluster
- - name: key_name_in_secret
- value: "agekey"
- # Using `git_fleet_url` instead:
- # - name: fleet_repo_url
- # Using `git_sw_catalogs_url` instead:
- # - name: sw_catalogs_repo_url
- - name: mgmt_project_name
- value: "osm_admin"
-
- # Advanced parameters - Recommended to keep defaults
- - name: mgmt_cluster_name
- value: "_management"
- - name: base_templates_path
- value: "cloud-resources/capi"
- - name: cloned_fleet_folder_name
- value: "fleet-osm"
- - name: cloned_sw_catalogs_folder_name
- value: "sw-catalogs-osm"
-
- # Debug/dry run?
- - name: debug
- value: "false"
- - name: dry_run
- value: "false"
-
-
- # # Cleanup policy
- # ttlStrategy:
- # secondsAfterCompletion: 100 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished
- # secondsAfterSuccess: 50 # Time to live after workflow is successful
- # secondsAfterFailure: 50 # Time to live after workflow fails
-
- entrypoint: update-cluster-and-bootstrap
-
- templates:
- # Main template
- - name: update-cluster-and-bootstrap
- inputs:
- parameters:
- # Fleet repo
- - name: git_fleet_url
- - name: fleet_destination_folder
- - name: git_fleet_cred_secret
- # SW-Catalogs repo
- - name: git_sw_catalogs_url
- - name: sw_catalogs_destination_folder
- - name: git_sw_catalogs_cred_secret
- # Specific parameters
- - name: cluster_kustomization_name
- - name: cluster_name
- - name: providerconfig_name
- - name: vm_size
- - name: node_count
- - name: k8s_version
- - name: public_key_mgmt
- - name: public_key_new_cluster
- - name: secret_name_private_age_key_for_new_cluster
- - name: key_name_in_secret
- ## CAPI and CAPI Openstack specific parameters
- - name: control_plane_vm_size
- - name: control_plane_node_count
- - name: openstack_dns_nameservers
- - name: openstack_external_network_id
- - name: openstack_failure_domain
- - name: openstack_ssh_key_name
- - name: cluster_cni
- - name: openstack_worker_image_name
- - name: openstack_control_plane_image_name
- - name: capo_resources_namespace
- # Other parameters - Recommended to keep defaults
- # - name: fleet_repo_url
- # - name: sw_catalogs_repo_url
- - name: mgmt_project_name
- # - name: skip_bootstrap
- # Other parameters - Recommended to keep defaults
- - name: mgmt_cluster_name
- - name: base_templates_path
- - name: cloned_fleet_folder_name
- - name: cloned_sw_catalogs_folder_name
- # Debug/dry run?
- - name: debug
- - name: dry_run
-
- steps:
- # ------ Preparations for transaction
- - - name: generate-fleet-volume-repo
- templateRef:
- name: k8s-resources-wft
- template: generate-volume
- arguments:
- parameters:
- - name: pvc-size
- value: '100Mi'
- - name: generate-sw-catalogs-volume-repo
- templateRef:
- name: k8s-resources-wft
- template: generate-volume
- arguments:
- parameters:
- - name: pvc-size
- value: '100Mi'
- - - name: clone-fleet
- templateRef:
- name: git-wft
- template: git-clone
- arguments:
- parameters:
- - name: mount_path
- value: "/fleet"
- - name: repo_url
- value: "{{inputs.parameters.git_fleet_url}}"
- - name: destination_folder
- value: "{{inputs.parameters.fleet_destination_folder}}"
- - name: git_cred_secret
- value: "{{inputs.parameters.git_fleet_cred_secret}}"
- - name: git_volume_name
- value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
- - name: clone-sw-catalogs
- templateRef:
- name: git-wft
- template: git-clone
- arguments:
- parameters:
- - name: mount_path
- value: "/sw-catalogs"
- - name: repo_url
- value: "{{inputs.parameters.git_sw_catalogs_url}}"
- - name: destination_folder
- value: "{{inputs.parameters.sw_catalogs_destination_folder}}"
- - name: git_cred_secret
- value: "{{inputs.parameters.git_sw_catalogs_cred_secret}}"
- - name: git_volume_name
- value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
- # ------ end of preparations for transaction
-
- # ------ Transformations
- # Update CAPI cluster in cloud (Openstack)
- - - name: update-cluster
- templateRef:
- name: cluster-management-wft
- template: update-capi-openstack-cluster
- arguments:
- parameters:
- # Volumes with cloned repos
- - name: fleet_volume_name
- value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
- - name: fleet_mount_path
- value: "/fleet"
- - name: sw_catalogs_volume_name
- value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
- - name: sw_catalogs_mount_path
- value: "/sw-catalogs"
- # Specific parameters
- - name: cluster_kustomization_name
- value: "{{inputs.parameters.cluster_kustomization_name}}"
- - name: cluster_name
- value: "{{inputs.parameters.cluster_name}}"
- - name: vm_size
- value: "{{inputs.parameters.vm_size}}"
- - name: node_count
- value: "{{inputs.parameters.node_count}}"
- - name: k8s_version
- value: "{{inputs.parameters.k8s_version}}"
- - name: providerconfig_name
- value: "{{inputs.parameters.providerconfig_name}}"
- - name: public_key_mgmt
- value: "{{inputs.parameters.public_key_mgmt}}"
- - name: public_key_new_cluster
- value: "{{inputs.parameters.public_key_new_cluster}}"
- - name: secret_name_private_age_key_for_new_cluster
- value: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
- - name: key_name_in_secret
- value: "{{inputs.parameters.key_name_in_secret}}"
- ## CAPI and CAPI Openstack specific parameters
- - name: control_plane_vm_size
- value: "{{inputs.parameters.control_plane_vm_size}}"
- - name: control_plane_node_count
- value: "{{inputs.parameters.control_plane_node_count}}"
- - name: openstack_dns_nameservers
- value: "{{inputs.parameters.openstack_dns_nameservers}}"
- - name: openstack_external_network_id
- value: "{{inputs.parameters.openstack_external_network_id}}"
- - name: openstack_failure_domain
- value: "{{inputs.parameters.openstack_failure_domain}}"
- - name: openstack_ssh_key_name
- value: "{{inputs.parameters.openstack_ssh_key_name}}"
- - name: cluster_cni
- value: "{{inputs.parameters.cluster_cni}}"
- - name: openstack_worker_image_name
- value: "{{inputs.parameters.openstack_worker_image_name}}"
- - name: openstack_control_plane_image_name
- value: "{{inputs.parameters.openstack_control_plane_image_name}}"
- - name: capo_resources_namespace
- value: "{{inputs.parameters.capo_resources_namespace}}"
- ## Fed with `git_fleet_url` to avoid duplicates
- - name: fleet_repo_url
- value: "{{inputs.parameters.git_fleet_url}}"
- ## Fed with `git_sw_catalogs_url` to avoid duplicates
- - name: sw_catalogs_repo_url
- value: "{{inputs.parameters.git_sw_catalogs_url}}"
- - name: mgmt_project_name
- value: "{{inputs.parameters.mgmt_project_name}}"
- # - name: skip_bootstrap
- # value: "{{inputs.parameters.skip_bootstrap}}"
- # Other parameters - Recommended to keep defaults
- - name: mgmt_cluster_name
- value: "{{inputs.parameters.mgmt_cluster_name}}"
- - name: base_templates_path
- value: "{{inputs.parameters.base_templates_path}}"
- - name: cloned_fleet_folder_name
- value: "{{inputs.parameters.cloned_fleet_folder_name}}"
- - name: cloned_sw_catalogs_folder_name
- value: "{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
- # Debug?
- - name: debug
- value: "{{inputs.parameters.debug}}"
- # ------ end of transformations
-
- # ------ Commit transaction
- - - name: push-to-fleet
- templateRef:
- name: git-wft
- template: git-commit-merge-push
- arguments:
- parameters:
- - name: mount_path
- value: "/fleet"
- - name: repo_folder
- value: "{{inputs.parameters.fleet_destination_folder}}"
- - name: git_cred_secret
- value: "{{inputs.parameters.git_fleet_cred_secret}}"
- - name: git_volume_name
- value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
- - name: commit_message
- value: "Update CAPI Openstack cluster {{inputs.parameters.cluster_kustomization_name}} at {{inputs.parameters.providerconfig_name}}"
- - name: main_branch
- value: main
- - name: contrib_branch
- value: osm_contrib
- - name: dry_run
- value: "{{inputs.parameters.dry_run}}"
-# ------ end of commit transaction