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