diff --git a/.github/workflows/stackhpc-all-in-one.yml b/.github/workflows/stackhpc-all-in-one.yml index 3a20b1c9a..004f655b9 100644 --- a/.github/workflows/stackhpc-all-in-one.yml +++ b/.github/workflows/stackhpc-all-in-one.yml @@ -30,7 +30,7 @@ on: vm_image: description: Image for the all-in-one VM type: string - default: CentOS-stream8 + default: bb8c0a34-533f-42fb-a49b-3461e677f3f6 vm_interface: description: Default network interface name type: string diff --git a/.github/workflows/stackhpc-pull-request.yml b/.github/workflows/stackhpc-pull-request.yml index f193ce251..899f88162 100644 --- a/.github/workflows/stackhpc-pull-request.yml +++ b/.github/workflows/stackhpc-pull-request.yml @@ -142,7 +142,7 @@ jobs: kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} os_distribution: rocky os_release: "9" - ssh_username: rocky + ssh_username: cloud-user neutron_plugin: ovs vm_image: Rocky9 vm_interface: ens3 @@ -159,7 +159,7 @@ jobs: kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} os_distribution: rocky os_release: "9" - ssh_username: rocky + ssh_username: cloud-user neutron_plugin: ovn vm_image: Rocky9 vm_interface: ens3 diff --git a/etc/kayobe/ansible/configure-vxlan.yml b/etc/kayobe/ansible/configure-vxlan.yml index b43c8b65d..a801c5418 100644 --- a/etc/kayobe/ansible/configure-vxlan.yml +++ b/etc/kayobe/ansible/configure-vxlan.yml @@ -1,7 +1,7 @@ --- - name: Configure VXLAN hosts: controllers,compute,seed,storage - gather_facts: false + gather_facts: true vars: ansible_user: "{{ bootstrap_user }}" # We can't assume that a virtualenv exists at this point, so use the system diff --git a/etc/kayobe/environments/ci-aio/controllers.yml b/etc/kayobe/environments/ci-aio/controllers.yml index 1ee9be126..86ef1fad5 100644 --- a/etc/kayobe/environments/ci-aio/controllers.yml +++ b/etc/kayobe/environments/ci-aio/controllers.yml @@ -4,4 +4,4 @@ # User with which to access the controllers via SSH during bootstrap, in order # to setup the Kayobe user account. Default is {{ os_distribution }}. -controller_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'rocky' if os_release == '9' else 'cloud-user' }}" +controller_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'cloud-user' }}" diff --git a/etc/kayobe/environments/ci-builder/seed.yml b/etc/kayobe/environments/ci-builder/seed.yml index 0a7b393ad..38f28ba88 100644 --- a/etc/kayobe/environments/ci-builder/seed.yml +++ b/etc/kayobe/environments/ci-builder/seed.yml @@ -4,4 +4,4 @@ # User with which to access the seed via SSH during bootstrap, in order # to setup the Kayobe user account. Default is {{ os_distribution }}. -seed_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'rocky' if os_release == '9' else 'cloud-user' }}" +seed_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'cloud-user' }}" diff --git a/etc/kayobe/environments/ci-multinode/compute.yml b/etc/kayobe/environments/ci-multinode/compute.yml index 6845f5950..7e7701cf0 100644 --- a/etc/kayobe/environments/ci-multinode/compute.yml +++ b/etc/kayobe/environments/ci-multinode/compute.yml @@ -1,5 +1,5 @@ --- -compute_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'rocky' if os_release == '9' else 'cloud-user' }}" +compute_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'cloud-user' }}" # List of storage volume groups. See mrlesmithjr.manage-lvm role for # format. compute_lvm_groups: diff --git a/etc/kayobe/environments/ci-multinode/controllers.yml b/etc/kayobe/environments/ci-multinode/controllers.yml index 770b7db38..73c31c27f 100644 --- a/etc/kayobe/environments/ci-multinode/controllers.yml +++ b/etc/kayobe/environments/ci-multinode/controllers.yml @@ -1,5 +1,5 @@ --- -controller_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'rocky' if os_release == '9' else 'cloud-user' }}" +controller_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'cloud-user' }}" # List of storage volume groups. See mrlesmithjr.manage-lvm role for # format. controller_lvm_groups: diff --git a/etc/kayobe/environments/ci-multinode/inventory/group_vars/compute/network-interfaces b/etc/kayobe/environments/ci-multinode/inventory/group_vars/compute/network-interfaces index aab2482b8..96c6f15c3 100644 --- a/etc/kayobe/environments/ci-multinode/inventory/group_vars/compute/network-interfaces +++ b/etc/kayobe/environments/ci-multinode/inventory/group_vars/compute/network-interfaces @@ -2,7 +2,7 @@ ############################################################################### # Network interface definitions for the compute group. -admin_oc_interface: "eno1" +admin_oc_interface: "{{ ansible_facts.default_ipv4.interface }}" internal_interface: "{{ vxlan_interfaces[0].device }}.{{ internal_vlan }}" diff --git a/etc/kayobe/environments/ci-multinode/inventory/group_vars/controllers/network-interfaces b/etc/kayobe/environments/ci-multinode/inventory/group_vars/controllers/network-interfaces index 2dab6c5a8..d02d17ead 100644 --- a/etc/kayobe/environments/ci-multinode/inventory/group_vars/controllers/network-interfaces +++ b/etc/kayobe/environments/ci-multinode/inventory/group_vars/controllers/network-interfaces @@ -2,7 +2,7 @@ ############################################################################### # Network interface definitions for the controller group. -admin_oc_interface: "eno1" +admin_oc_interface: "{{ ansible_facts.default_ipv4.interface }}" internal_interface: "{{ vxlan_interfaces[0].device }}.{{ internal_vlan }}" diff --git a/etc/kayobe/environments/ci-multinode/kolla.yml b/etc/kayobe/environments/ci-multinode/kolla.yml index e645b971c..5c6c80dae 100644 --- a/etc/kayobe/environments/ci-multinode/kolla.yml +++ b/etc/kayobe/environments/ci-multinode/kolla.yml @@ -4,12 +4,3 @@ kolla_enable_cinder_backup: true kolla_enable_neutron_provider_networks: true kolla_enable_ovn: true kolla_enable_octavia: true - -# Override these from etc/kayobe/kolla.yml -# These are set to true within etc/kayobe/kolla.yml. -# Leaving them set to true would require additional -# configuration change. -kolla_enable_central_logging: false -kolla_enable_elasticsearch_curator: false -kolla_enable_grafana: false -kolla_enable_prometheus: false diff --git a/etc/kayobe/environments/ci-multinode/kolla/globals.yml b/etc/kayobe/environments/ci-multinode/kolla/globals.yml index 8d020e349..bd726ddc5 100644 --- a/etc/kayobe/environments/ci-multinode/kolla/globals.yml +++ b/etc/kayobe/environments/ci-multinode/kolla/globals.yml @@ -15,6 +15,9 @@ nova_backend_ceph: "yes" neutron_bridge_name: "{{ vxlan_interfaces[0].device }}-ovs" neutron_external_interface: "{{ vxlan_interfaces[0].device }}" +# Elasticsearch memory tuning +es_heap_size: 1g + # Octavia load balancer configuration octavia_auto_configure: "no" octavia_provider_drivers: "ovn:OVN provider" diff --git a/etc/kayobe/environments/ci-multinode/networks.yml b/etc/kayobe/environments/ci-multinode/networks.yml index e6ef17fad..e184fffcf 100644 --- a/etc/kayobe/environments/ci-multinode/networks.yml +++ b/etc/kayobe/environments/ci-multinode/networks.yml @@ -73,7 +73,7 @@ storage_mgmt_net_name: storage_mgmt # Internal network internal_cidr: 192.168.37.0/24 -internal_mtu: 1450 +internal_mtu: "{{ ansible_facts.default_ipv4.mtu - 50 }}" internal_allocation_pool_start: 192.168.37.3 internal_allocation_pool_end: 192.168.37.254 internal_vip_address: 192.168.37.2 @@ -88,7 +88,7 @@ external_vlan: 102 # Public network public_cidr: 192.168.39.0/24 -public_mtu: 1450 +public_mtu: "{{ ansible_facts.default_ipv4.mtu - 50 }}" public_allocation_pool_start: 192.168.39.3 public_allocation_pool_end: 192.168.39.254 public_vip_address: 192.168.39.2 @@ -96,28 +96,28 @@ public_vlan: 103 # Tunnel network tunnel_cidr: 192.168.40.0/24 -tunnel_mtu: 1450 +tunnel_mtu: "{{ ansible_facts.default_ipv4.mtu - 50 }}" tunnel_allocation_pool_start: 192.168.40.3 tunnel_allocation_pool_end: 192.168.40.254 tunnel_vlan: 104 # Storage network storage_cidr: 192.168.41.0/24 -storage_mtu: 1450 +storage_mtu: "{{ ansible_facts.default_ipv4.mtu - 50 }}" storage_allocation_pool_start: 192.168.41.3 storage_allocation_pool_end: 192.168.41.254 storage_vlan: 105 # Storage management network storage_mgmt_cidr: 192.168.42.0/24 -storage_mgmt_mtu: 1450 +storage_mgmt_mtu: "{{ ansible_facts.default_ipv4.mtu - 50 }}" storage_mgmt_allocation_pool_start: 192.168.42.3 storage_mgmt_allocation_pool_end: 192.168.42.254 storage_mgmt_vlan: 106 # Provision overcloud network provision_oc_cidr: 192.168.33.0/24 -provision_oc_mtu: 1450 +provision_oc_mtu: "{{ ansible_facts.default_ipv4.mtu - 50 }}" provision_oc_allocation_pool_start: 192.168.33.128 provision_oc_allocation_pool_end: 192.168.33.254 provision_oc_vlan: 107 diff --git a/etc/kayobe/environments/ci-multinode/seed.yml b/etc/kayobe/environments/ci-multinode/seed.yml index 249d5e101..3eb7afa90 100644 --- a/etc/kayobe/environments/ci-multinode/seed.yml +++ b/etc/kayobe/environments/ci-multinode/seed.yml @@ -1,5 +1,5 @@ --- -seed_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'rocky' if os_release == '9' else 'cloud-user' }}" +seed_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'cloud-user' }}" seed_lvm_groups: - "{{ stackhpc_lvm_group_rootvg }}" @@ -8,3 +8,7 @@ seed_lvm_groups: seed_extra_network_interfaces: - "external" - "public" + +# Enable IP routing and source NAT on the seed, allowing it to be used as the +# external subnet gateway and provide internet access for VMs in the deployment. +seed_enable_snat: true diff --git a/etc/kayobe/environments/ci-multinode/storage.yml b/etc/kayobe/environments/ci-multinode/storage.yml index 4aab8a5ed..b152af472 100644 --- a/etc/kayobe/environments/ci-multinode/storage.yml +++ b/etc/kayobe/environments/ci-multinode/storage.yml @@ -1,5 +1,5 @@ --- -storage_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'rocky' if os_release == '9' else 'cloud-user' }}" +storage_bootstrap_user: "{{ os_distribution if os_distribution == 'ubuntu' else 'cloud-user' }}" # List of storage volume groups. See mrlesmithjr.manage-lvm role for # format. storage_lvm_groups: diff --git a/releasenotes/notes/add-monitoring-to-multinode-958603f026edbc7c.yaml b/releasenotes/notes/add-monitoring-to-multinode-958603f026edbc7c.yaml new file mode 100644 index 000000000..0a985519c --- /dev/null +++ b/releasenotes/notes/add-monitoring-to-multinode-958603f026edbc7c.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Set monitoring services be enabled by default in the ``ci-multinode`` + environment. diff --git a/releasenotes/notes/add-vm-overcloud-support-92baa7c2ce87ac1d.yaml b/releasenotes/notes/add-vm-overcloud-support-92baa7c2ce87ac1d.yaml new file mode 100644 index 000000000..a3ebacc1f --- /dev/null +++ b/releasenotes/notes/add-vm-overcloud-support-92baa7c2ce87ac1d.yaml @@ -0,0 +1,7 @@ +--- +features: + - | + Adds support for using a VMs as compute and controller nodes in the + ``ci-multinode`` environment by dynamically setting the MTU of the networks + in networks.yml and removing the static definition of the network + interfaces for the compute and controller groups. diff --git a/releasenotes/notes/fix-multinode-vm-internet-connectivity-49ab64cd75833f09.yaml b/releasenotes/notes/fix-multinode-vm-internet-connectivity-49ab64cd75833f09.yaml new file mode 100644 index 000000000..007de8a76 --- /dev/null +++ b/releasenotes/notes/fix-multinode-vm-internet-connectivity-49ab64cd75833f09.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + Fixes internet connectivity for VMs deployed in the ``ci-multinode`` + environment. diff --git a/releasenotes/notes/ironic-fix-online-upgrades-36e86b3ab3ac081c.yaml b/releasenotes/notes/ironic-fix-online-upgrades-36e86b3ab3ac081c.yaml new file mode 100644 index 000000000..b7e0f9de7 --- /dev/null +++ b/releasenotes/notes/ironic-fix-online-upgrades-36e86b3ab3ac081c.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Adds Ironic images tags to fix a bug with online upgrades for + Bios/Traits. See patch: + https://review.opendev.org/c/openstack/ironic/+/877409 diff --git a/terraform/aio/vm.tf b/terraform/aio/vm.tf index bf881e5cc..6a65cff44 100644 --- a/terraform/aio/vm.tf +++ b/terraform/aio/vm.tf @@ -33,9 +33,14 @@ variable "aio_vm_subnet" { type = string } +locals { + image_is_uuid = length(regexall("^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$", var.aio_vm_image)) > 0 +} + data "openstack_images_image_v2" "image" { name = var.aio_vm_image most_recent = true + count = local.image_is_uuid ? 0 : 1 } data "openstack_networking_subnet_v2" "network" { @@ -52,7 +57,7 @@ resource "openstack_compute_instance_v2" "kayobe-aio" { } block_device { - uuid = data.openstack_images_image_v2.image.id + uuid = local.image_is_uuid ? var.aio_vm_image: data.openstack_images_image_v2.image[0].id source_type = "image" volume_size = 100 boot_index = 0