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:-"false"}"
- # Only change if absolutely needeed
+ local SKIP_BOOTSTRAP="${23:-"true"}"
+ # 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: purge
- name: temp_kubeconfig_secret_name
+ - name: mgmt_cluster_name
+ - name: purge
# 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-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: 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
+ ## 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
+ # 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