b0a0693fd4e6afb2a39481d4576e5cf4a36ff294
[osm/devops.git] /
1 #######################################################################################
2 # Copyright ETSI Contributors and Others.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #    http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13 # implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #######################################################################################
17
18 apiVersion: argoproj.io/v1alpha1
19 kind: WorkflowTemplate
20 metadata:
21   name: full-update-openshift-cluster-and-bootstrap-wft
22   namespace: osm-workflows
23
24 spec:
25   arguments:
26     parameters:
27
28     # Fleet repo
29     - name: git_fleet_url
30     - name: fleet_destination_folder
31     - name: git_fleet_cred_secret
32
33     # SW-Catalogs repo
34     - name: git_sw_catalogs_url
35     - name: sw_catalogs_destination_folder
36     - name: git_sw_catalogs_cred_secret
37
38     # Specific parameters - Generic cluster creation
39     - name: cluster_kustomization_name
40     - name: cluster_name
41     - name: providerconfig_name
42     - name: vm_size
43     - name: node_count
44     - name: k8s_version
45
46     ## Specific parameters - Openshift
47     - name: control_plane_vm_size
48     - name: control_plane_node_count
49     - name: openstack_dns_nameservers
50     - name: openstack_external_network_id
51     - name: openstack_failure_domain
52     - name: openstack_ssh_key_name
53     - name: cluster_cni
54     - name: openstack_worker_image_name
55     - name: openstack_control_plane_image_name
56     - name: capo_resources_namespace
57
58     # Specific parameters - Bootstrap and credentials
59     - name: public_key_mgmt
60     - name: public_key_new_cluster
61     - name: secret_name_private_age_key_for_new_cluster
62     - name: key_name_in_secret
63       value: "agekey"
64     # Using `git_fleet_url` instead:
65     # - name: fleet_repo_url
66     # Using `git_sw_catalogs_url` instead:
67     # - name: sw_catalogs_repo_url
68     - name: mgmt_project_name
69       value: "osm_admin"
70
71     # Advanced parameters - Recommended to keep defaults
72     - name: mgmt_cluster_name
73       value: "_management"
74     - name: base_templates_path
75       value: "cloud-resources/capi"
76     - name: cloned_fleet_folder_name
77       value: "fleet-osm"
78     - name: cloned_sw_catalogs_folder_name
79       value: "sw-catalogs-osm"
80
81     # Debug/dry run?
82     - name: debug
83       value: "false"
84     - name: dry_run
85       value: "false"
86
87
88   # # Cleanup policy
89   # ttlStrategy:
90   #   secondsAfterCompletion: 100 # Time to live after workflow is completed, replaces ttlSecondsAfterFinished
91   #   secondsAfterSuccess: 50     # Time to live after workflow is successful
92   #   secondsAfterFailure: 50     # Time to live after workflow fails
93
94   entrypoint: update-cluster-and-bootstrap
95
96   templates:
97   # Main template
98   - name: update-cluster-and-bootstrap
99     inputs:
100       parameters:
101       # Fleet repo
102       - name: git_fleet_url
103       - name: fleet_destination_folder
104       - name: git_fleet_cred_secret
105       # SW-Catalogs repo
106       - name: git_sw_catalogs_url
107       - name: sw_catalogs_destination_folder
108       - name: git_sw_catalogs_cred_secret
109       # Specific parameters
110       - name: cluster_kustomization_name
111       - name: cluster_name
112       - name: providerconfig_name
113       - name: vm_size
114       - name: node_count
115       - name: k8s_version
116       - name: public_key_mgmt
117       - name: public_key_new_cluster
118       - name: secret_name_private_age_key_for_new_cluster
119       - name: key_name_in_secret
120       ## Openshift specific parameters
121       - name: control_plane_vm_size
122       - name: control_plane_node_count
123       - name: openstack_dns_nameservers
124       - name: openstack_external_network_id
125       - name: openstack_failure_domain
126       - name: openstack_ssh_key_name
127       - name: cluster_cni
128       - name: openstack_worker_image_name
129       - name: openstack_control_plane_image_name
130       - name: capo_resources_namespace
131       # Other parameters - Recommended to keep defaults
132       # - name: fleet_repo_url
133       # - name: sw_catalogs_repo_url
134       - name: mgmt_project_name
135       # - name: skip_bootstrap
136       # Other parameters - Recommended to keep defaults
137       - name: mgmt_cluster_name
138       - name: base_templates_path
139       - name: cloned_fleet_folder_name
140       - name: cloned_sw_catalogs_folder_name
141       # Debug/dry run?
142       - name: debug
143       - name: dry_run
144
145     steps:
146     # ------ Preparations for transaction
147     - - name: generate-fleet-volume-repo
148         templateRef:
149           name: k8s-resources-wft
150           template: generate-volume
151         arguments:
152           parameters:
153             - name: pvc-size
154               value: '100Mi'
155       - name: generate-sw-catalogs-volume-repo
156         templateRef:
157           name: k8s-resources-wft
158           template: generate-volume
159         arguments:
160           parameters:
161             - name: pvc-size
162               value: '100Mi'
163     - - name: clone-fleet
164         templateRef:
165           name: git-wft
166           template: git-clone
167         arguments:
168           parameters:
169           - name: mount_path
170             value: "/fleet"
171           - name: repo_url
172             value: "{{inputs.parameters.git_fleet_url}}"
173           - name: destination_folder
174             value: "{{inputs.parameters.fleet_destination_folder}}"
175           - name: git_cred_secret
176             value: "{{inputs.parameters.git_fleet_cred_secret}}"
177           - name: git_volume_name
178             value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
179       - name: clone-sw-catalogs
180         templateRef:
181           name: git-wft
182           template: git-clone
183         arguments:
184           parameters:
185           - name: mount_path
186             value: "/sw-catalogs"
187           - name: repo_url
188             value: "{{inputs.parameters.git_sw_catalogs_url}}"
189           - name: destination_folder
190             value: "{{inputs.parameters.sw_catalogs_destination_folder}}"
191           - name: git_cred_secret
192             value: "{{inputs.parameters.git_sw_catalogs_cred_secret}}"
193           - name: git_volume_name
194             value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
195     # ------ end of preparations for transaction
196
197     # ------ Transformations
198     # Update CAPI cluster in cloud (Openstack)
199     - - name: update-cluster
200         templateRef:
201           name: cluster-management-wft
202           template: update-capi-openstack-cluster
203         arguments:
204           parameters:
205           # Volumes with cloned repos
206           - name: fleet_volume_name
207             value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
208           - name: fleet_mount_path
209             value: "/fleet"
210           - name: sw_catalogs_volume_name
211             value: '{{steps.generate-sw-catalogs-volume-repo.outputs.parameters.pvc-name}}'
212           - name: sw_catalogs_mount_path
213             value: "/sw-catalogs"
214           # Specific parameters
215           - name: cluster_kustomization_name
216             value: "{{inputs.parameters.cluster_kustomization_name}}"
217           - name: cluster_name
218             value: "{{inputs.parameters.cluster_name}}"
219           - name: vm_size
220             value: "{{inputs.parameters.vm_size}}"
221           - name: node_count
222             value: "{{inputs.parameters.node_count}}"
223           - name: k8s_version
224             value: "{{inputs.parameters.k8s_version}}"
225           - name: providerconfig_name
226             value: "{{inputs.parameters.providerconfig_name}}"
227           - name: public_key_mgmt
228             value: "{{inputs.parameters.public_key_mgmt}}"
229           - name: public_key_new_cluster
230             value: "{{inputs.parameters.public_key_new_cluster}}"
231           - name: secret_name_private_age_key_for_new_cluster
232             value: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
233           - name: key_name_in_secret
234             value: "{{inputs.parameters.key_name_in_secret}}"
235           ## CAPI and CAPI Openstack specific parameters
236           - name: control_plane_vm_size
237             value: "{{inputs.parameters.control_plane_vm_size}}"
238           - name: control_plane_node_count
239             value: "{{inputs.parameters.control_plane_node_count}}"
240           - name: openstack_dns_nameservers
241             value: "{{inputs.parameters.openstack_dns_nameservers}}"
242           - name: openstack_external_network_id
243             value: "{{inputs.parameters.openstack_external_network_id}}"
244           - name: openstack_failure_domain
245             value: "{{inputs.parameters.openstack_failure_domain}}"
246           - name: openstack_ssh_key_name
247             value: "{{inputs.parameters.openstack_ssh_key_name}}"
248           - name: cluster_cni
249             value: "{{inputs.parameters.cluster_cni}}"
250           - name: openstack_worker_image_name
251             value: "{{inputs.parameters.openstack_worker_image_name}}"
252           - name: openstack_control_plane_image_name
253             value: "{{inputs.parameters.openstack_control_plane_image_name}}"
254           - name: capo_resources_namespace
255             value: "{{inputs.parameters.capo_resources_namespace}}"
256           ## Fed with `git_fleet_url` to avoid duplicates
257           - name: fleet_repo_url
258             value: "{{inputs.parameters.git_fleet_url}}"
259           ## Fed with `git_sw_catalogs_url` to avoid duplicates
260           - name: sw_catalogs_repo_url
261             value: "{{inputs.parameters.git_sw_catalogs_url}}"
262           - name: mgmt_project_name
263             value: "{{inputs.parameters.mgmt_project_name}}"
264           # - name: skip_bootstrap
265           #   value: "{{inputs.parameters.skip_bootstrap}}"
266           # Other parameters - Recommended to keep defaults
267           - name: mgmt_cluster_name
268             value: "{{inputs.parameters.mgmt_cluster_name}}"
269           - name: base_templates_path
270             value: "{{inputs.parameters.base_templates_path}}"
271           - name: cloned_fleet_folder_name
272             value: "{{inputs.parameters.cloned_fleet_folder_name}}"
273           - name: cloned_sw_catalogs_folder_name
274             value: "{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
275           # Debug?
276           - name: debug
277             value: "{{inputs.parameters.debug}}"
278     # ------ end of transformations
279
280     # ------ Commit transaction
281     - - name: push-to-fleet
282         templateRef:
283           name: git-wft
284           template: git-commit-merge-push
285         arguments:
286           parameters:
287           - name: mount_path
288             value: "/fleet"
289           - name: repo_folder
290             value: "{{inputs.parameters.fleet_destination_folder}}"
291           - name: git_cred_secret
292             value: "{{inputs.parameters.git_fleet_cred_secret}}"
293           - name: git_volume_name
294             value: '{{steps.generate-fleet-volume-repo.outputs.parameters.pvc-name}}'
295           - name: commit_message
296             value: "Update CAPI Openstack cluster {{inputs.parameters.cluster_kustomization_name}} at {{inputs.parameters.providerconfig_name}}"
297           - name: main_branch
298             value: main
299           - name: contrib_branch
300             value: osm_contrib
301           - name: dry_run
302             value: "{{inputs.parameters.dry_run}}"
303 # ------ end of commit transaction