diff --git a/playbookconfig/src/playbooks/roles/bootstrap/bringup-bootstrap-applications/templates/last_bootstrap_config.j2 b/playbookconfig/src/playbooks/roles/bootstrap/bringup-bootstrap-applications/templates/last_bootstrap_config.j2 index b7b298390..302f8ce54 100644 --- a/playbookconfig/src/playbooks/roles/bootstrap/bringup-bootstrap-applications/templates/last_bootstrap_config.j2 +++ b/playbookconfig/src/playbooks/roles/bootstrap/bringup-bootstrap-applications/templates/last_bootstrap_config.j2 @@ -20,6 +20,7 @@ prev_docker_https_proxy: {{ docker_https_proxy }} prev_docker_no_proxy: {{ docker_no_proxy | sort | join(',') }} prev_pxeboot_start_address: {{ pxeboot_start_address }} prev_pxeboot_end_address: {{ pxeboot_end_address }} +prev_pxeboot_floating_address: {{ pxeboot_floating_address }} prev_management_start_address: {{ management_start_address }} prev_management_end_address: {{ management_end_address }} prev_management_floating_address: {{ management_floating_address }} diff --git a/playbookconfig/src/playbooks/roles/bootstrap/persist-config/files/populate_initial_config.py b/playbookconfig/src/playbooks/roles/bootstrap/persist-config/files/populate_initial_config.py index 63585af41..66e2a5dc5 100644 --- a/playbookconfig/src/playbooks/roles/bootstrap/persist-config/files/populate_initial_config.py +++ b/playbookconfig/src/playbooks/roles/bootstrap/persist-config/files/populate_initial_config.py @@ -569,6 +569,8 @@ def populate_pxeboot_network(client): 'PXEBOOT_START_ADDRESS') end_address = CONF.get('BOOTSTRAP_CONFIG', 'PXEBOOT_END_ADDRESS') + floating_address = CONF.get('BOOTSTRAP_CONFIG', + 'PXEBOOT_FLOATING_ADDRESS') network_name = 'pxeboot' addrpool_name = 'pxeboot' @@ -585,6 +587,10 @@ def populate_pxeboot_network(client): 'prefix': pxeboot_subnet.prefixlen, 'ranges': [(start_address, end_address)], } + if (floating_address != 'undef'): + values.update({ + 'floating_address': floating_address, + }) pool = create_addrpool(client, values) # create the network for the pool diff --git a/playbookconfig/src/playbooks/roles/bootstrap/persist-config/templates/bootstrap_config.j2 b/playbookconfig/src/playbooks/roles/bootstrap/persist-config/templates/bootstrap_config.j2 index b6429915b..241708ae1 100644 --- a/playbookconfig/src/playbooks/roles/bootstrap/persist-config/templates/bootstrap_config.j2 +++ b/playbookconfig/src/playbooks/roles/bootstrap/persist-config/templates/bootstrap_config.j2 @@ -11,6 +11,7 @@ NAMESERVERS={{ dns_servers | join(',') }} PXEBOOT_SUBNET={{ pxeboot_subnet }} PXEBOOT_START_ADDRESS={{ address_pairs['pxeboot']['start'] }} PXEBOOT_END_ADDRESS={{ address_pairs['pxeboot']['end'] }} +PXEBOOT_FLOATING_ADDRESS={{ address_pairs['pxeboot']['floating'] }} MANAGEMENT_SUBNET={{ address_pairs['management']['subnet'] }} MANAGEMENT_START_ADDRESS={{ address_pairs['management']['start'] }} MANAGEMENT_END_ADDRESS={{ address_pairs['management']['end'] }} diff --git a/playbookconfig/src/playbooks/roles/bootstrap/prepare-env/tasks/main.yml b/playbookconfig/src/playbooks/roles/bootstrap/prepare-env/tasks/main.yml index 2d8726c35..0bcd363d8 100644 --- a/playbookconfig/src/playbooks/roles/bootstrap/prepare-env/tasks/main.yml +++ b/playbookconfig/src/playbooks/roles/bootstrap/prepare-env/tasks/main.yml @@ -99,6 +99,7 @@ - name: Set initial address facts if not defined. They will be updated later set_fact: + pxeboot_floating_address: "{{ pxeboot_floating_address | default('derived') }}" pxeboot_start_address: "{{ pxeboot_start_address | default('derived') }}" pxeboot_end_address: "{{ pxeboot_end_address | default('derived') }}" management_floating_address: "{{ management_floating_address | default('derived') }}" diff --git a/playbookconfig/src/playbooks/roles/bootstrap/validate-config/tasks/main.yml b/playbookconfig/src/playbooks/roles/bootstrap/validate-config/tasks/main.yml index db7615c1b..e501caa0b 100644 --- a/playbookconfig/src/playbooks/roles/bootstrap/validate-config/tasks/main.yml +++ b/playbookconfig/src/playbooks/roles/bootstrap/validate-config/tasks/main.yml @@ -476,6 +476,7 @@ set_fact: default_pxeboot_start_address: "{{ (pxeboot_subnet | ipaddr(1)).split('/')[0] }}" default_pxeboot_end_address: "{{ (pxeboot_subnet | ipaddr(-2)).split('/')[0] }}" + default_pxeboot_floating_address: "{{ (pxeboot_subnet | ipaddr(1)).split('/')[0] }}" # The provided subnets have passed validation, set the primary default addresses # based on the primary subnet values @@ -611,6 +612,9 @@ end: "{{ pxeboot_end_address if pxeboot_end_address != 'derived' else default_pxeboot_end_address }}" + floating: + "{{ pxeboot_floating_address if pxeboot_floating_address != 'derived' + else default_pxeboot_floating_address }}" subnet: "{{ network_params.pxeboot_subnet }}" management: start: @@ -828,7 +832,7 @@ # Not sure why ipaddr('address') and ipsubnet filter did not extract # the IP from CIDR input. Resort to string split for now. controller_floating_address: "{{ address_pairs['management']['floating'] }}" - controller_pxeboot_floating_address: "{{ address_pairs['pxeboot']['start'] }}" + controller_pxeboot_floating_address: "{{ address_pairs['pxeboot']['floating'] }}" cluster_floating_address: "{{ address_pairs['cluster_host']['floating'] }}" - name: Set subcloud admin floating address @@ -871,8 +875,12 @@ 'controller_1_address': "{{ controller_floating_address|ipmath(2) if system_mode != 'simplex' else controller_floating_address }}" - 'controller_pxeboot_address_0': "{{ controller_pxeboot_floating_address|ipmath(1) }}" - 'controller_pxeboot_address_1': "{{ controller_pxeboot_floating_address|ipmath(2) }}" + 'controller_pxeboot_address_0': "{{ controller_pxeboot_floating_address|ipmath(1) + if system_mode != 'simplex' + else controller_pxeboot_floating_address }}" + 'controller_pxeboot_address_1': "{{ controller_pxeboot_floating_address|ipmath(2) + if system_mode != 'simplex' + else controller_pxeboot_floating_address }}" 'controller_admin_floating_address': "{{ admin_start_address }}" # Make common facts available to other roles diff --git a/playbookconfig/src/playbooks/roles/common/validate-addresses/tasks/validate_address_range.yml b/playbookconfig/src/playbooks/roles/common/validate-addresses/tasks/validate_address_range.yml index de6cc3890..214a43c0c 100644 --- a/playbookconfig/src/playbooks/roles/common/validate-addresses/tasks/validate_address_range.yml +++ b/playbookconfig/src/playbooks/roles/common/validate-addresses/tasks/validate_address_range.yml @@ -1,6 +1,6 @@ --- # -# Copyright (c) 2019, 2022 Wind River Systems, Inc. +# Copyright (c) 2019, 2025 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # @@ -33,7 +33,7 @@ end = IPAddress("{{ end_addr }}") subnet = IPNetwork("{{ subnet }}") - start_end_equal_allowed = ['admin','management','cluster_host'] + start_end_equal_allowed = ['admin','management','cluster_host','pxeboot'] if not start < end: if "{{ network }}" in start_end_equal_allowed and not start == end: @@ -53,7 +53,7 @@ min_subnet_sizes = { 'cluster_pod': 65536, 'cluster_service': 65536, - 'pxeboot': 5, + 'pxeboot': min_size, 'multicast': 6, 'management': min_size, 'cluster_host': min_size, diff --git a/playbookconfig/src/playbooks/roles/optimized-restore/restore-configuration/tasks/restore-networking.yml b/playbookconfig/src/playbooks/roles/optimized-restore/restore-configuration/tasks/restore-networking.yml index 5eb54c7e8..ec7f5cbdf 100644 --- a/playbookconfig/src/playbooks/roles/optimized-restore/restore-configuration/tasks/restore-networking.yml +++ b/playbookconfig/src/playbooks/roles/optimized-restore/restore-configuration/tasks/restore-networking.yml @@ -45,7 +45,9 @@ # our list of already available internal addresses. - name: Add missing controller IP addresses command: "ip addr add {{ system_values[item] }} dev lo scope host" - when: system_values[item] not in all_addr_result.stdout_lines + when: + - system_values[item] not in all_addr_result.stdout_lines + - not (system_mode == 'simplex' and item == 'platform::network::pxeboot::params::controller0_address') loop: "{{ network_address_keys }}" - name: Start dnsmasq for internal FQDN diff --git a/playbookconfig/src/playbooks/roles/rehome-enroll-common/prepare-env/tasks/main.yml b/playbookconfig/src/playbooks/roles/rehome-enroll-common/prepare-env/tasks/main.yml index cbd62f32f..a4871495d 100644 --- a/playbookconfig/src/playbooks/roles/rehome-enroll-common/prepare-env/tasks/main.yml +++ b/playbookconfig/src/playbooks/roles/rehome-enroll-common/prepare-env/tasks/main.yml @@ -28,6 +28,7 @@ set_fact: pxeboot_start_address: "{{ pxeboot_start_address | default('derived') }}" pxeboot_end_address: "{{ pxeboot_end_address | default('derived') }}" + pxeboot_floating_address: "{{ pxeboot_floating_address | default('derived') }}" management_start_address: "{{ management_start_address | default('derived') }}" management_end_address: "{{ management_end_address | default('derived') }}" management_floating_address: "{{ management_floating_address | default('derived') }}"