diff --git a/roles/reproducer/README.md b/roles/reproducer/README.md index 0b884bc5cf..302e57dfb2 100644 --- a/roles/reproducer/README.md +++ b/roles/reproducer/README.md @@ -21,6 +21,7 @@ None * `cifmw_reproducer_skip_fetch_repositories`: (Bool) Skip fetching repositories from zuul var and simply copy the code from the ansible controller. Defaults to `false`. * `cifmw_reproducer_supported_hypervisor_os`: (List) List of supported hypervisor operating systems and their minimum version. * `cifmw_reproducer_minimum_hardware_requirements`: (Dict) Define minimum hardware requirements for specific scenarios. Example below +* `cifmw_reproducer_allow_two_ocp` (Bool) Allow to deploy OpenShift cluster just with two master node. ### Advanced parameters Those parameters shouldn't be used, unless the user is able to understand potential issues in their environment. diff --git a/roles/reproducer/defaults/main.yml b/roles/reproducer/defaults/main.yml index 737d2ebd74..071e369cc9 100644 --- a/roles/reproducer/defaults/main.yml +++ b/roles/reproducer/defaults/main.yml @@ -54,3 +54,4 @@ cifmw_reproducer_validate_network_host: "controller-0.utility" cifmw_reproducer_validate_ocp_layout: true cifmw_reproducer_ironic_node_name_prefix: +cifmw_reproducer_allow_two_ocp: false diff --git a/roles/reproducer/tasks/ocp_layout_assertions.yml b/roles/reproducer/tasks/ocp_layout_assertions.yml index d48736bc42..d2f78f8761 100644 --- a/roles/reproducer/tasks/ocp_layout_assertions.yml +++ b/roles/reproducer/tasks/ocp_layout_assertions.yml @@ -51,12 +51,13 @@ - _element.disksize is defined - _element.disksize | int > _disk - _element.amount is defined - - _element.amount >= _min_ocp + - _element.amount >= _min_ocp or cifmw_reproducer_allow_two_ocp quiet: true msg: >- Ensure you provide enough memory (>=16), cpus (>=10) and disksize (>50) to ocp nodes, set a correct amount (>=3) - and uefi is set to true in cifmw_libvirt_manager.vms.ocp + or set local setup (cifmw_reproducer_allow_two_ocp) and + uefi is set to true in cifmw_libvirt_manager.vms.ocp - name: Ensure we have needed data for ocp_worker if defined when: diff --git a/scenarios/reproducers/va-hci-minimal-2-masters.yml b/scenarios/reproducers/va-hci-minimal-2-masters.yml new file mode 100644 index 0000000000..6d81949b4b --- /dev/null +++ b/scenarios/reproducers/va-hci-minimal-2-masters.yml @@ -0,0 +1,129 @@ +--- +cifmw_parent_scenario: "scenarios/reproducers/va-hci-base.yml" + +# NOTE(dpawlik): Openshift can handle situations where there are only +# two masters, so there is no need to have a quorum +# NOTE: Be aware, that the vms.ocp has less RAM and vCPU set comparing to +# va-hci.yml scenario. +cifmw_reproducer_allow_two_ocp: true + +# HERE if you want to override kustomization, you can uncomment this parameter +# and push the data structure you want to apply. +# cifmw_architecture_user_kustomize: +# stage_0: +# 'network-values': +# data: +# starwars: Obiwan + +# HERE, if you want to stop the deployment loop at any stage, you can uncomment +# the following parameter and update the value to match the stage you want to +# reach. Known stages are: +# pre_kustomize_stage_INDEX +# pre_apply_stage_INDEX +# post_apply_stage_INDEX +# +# cifmw_deploy_architecture_stopper: + +cifmw_libvirt_manager_configuration: + networks: + osp_trunk: | + + osp_trunk + + + + + + + ocpbm: | + + ocpbm + + + + + + + ocppr: | + + ocppr + + + + vms: + # https://github.com/openshift-metal3/dev-scripts/blob/master/common.sh#L460 + ocp: + amount: 2 + admin_user: core + image_local_dir: "{{ cifmw_basedir }}/images/" + disk_file_name: "ocp_master" + disksize: "100" + extra_disks_num: 3 + extra_disks_size: "50G" + cpus: 12 + memory: 24 + root_part_id: 4 + uefi: true + nets: + - ocppr + - ocpbm + - osp_trunk + compute: + uefi: "{{ cifmw_use_uefi }}" + root_part_id: "{{ cifmw_root_partition_id }}" + amount: "{{ [cifmw_libvirt_manager_compute_amount|int, 3] | max }}" + image_url: "{{ cifmw_discovered_image_url }}" + sha256_image_name: "{{ cifmw_discovered_hash }}" + image_local_dir: "{{ cifmw_basedir }}/images/" + disk_file_name: "base-os.qcow2" + disksize: "{{ [cifmw_libvirt_manager_compute_disksize|int, 50] | max }}" + memory: "{{ [cifmw_libvirt_manager_compute_memory|int, 8] | max }}" + cpus: "{{ [cifmw_libvirt_manager_compute_cpus|int, 4] | max }}" + extra_disks_num: 3 + extra_disks_size: 30G + nets: + - ocpbm + - osp_trunk + controller: + uefi: "{{ cifmw_use_uefi }}" + root_part_id: "{{ cifmw_root_partition_id }}" + image_url: "{{ cifmw_discovered_image_url }}" + sha256_image_name: "{{ cifmw_discovered_hash }}" + image_local_dir: "{{ cifmw_basedir }}/images/" + disk_file_name: "base-os.qcow2" + disksize: 50 + memory: 8 + cpus: 4 + nets: + - ocpbm + - osp_trunk + +## devscript support for OCP deploy +cifmw_devscripts_config_overrides: + fips_mode: "{{ cifmw_fips_enabled | default(false) | bool }}" + +# Note: with that extra_network_names "osp_trunk", we instruct +# devscripts role to create a new network, and associate it to +# the OCP nodes. This one is a "private network", and will hold +# the VLANs used for network isolation. + +# Please create a custom env file to provide: +# cifmw_devscripts_ci_token: +# cifmw_devscripts_pull_secret: + +# Test Ceph file and object storage (block is enabled by default) +cifmw_ceph_daemons_layout: + rgw_enabled: true + dashboard_enabled: false + cephfs_enabled: true + ceph_nfs_enabled: false + +# Vars related to update_containers cinder volume and manila share +cifmw_update_containers_cindervolumes: + - ceph +cifmw_update_containers_manilashares: + - share1