apiVersion: v1 data: 25-cpu-pinning-nova.conf: | # CHANGEME [DEFAULT] reserved_host_memory_mb = 4096 reserved_huge_pages = node:0,size:4,count:524160 reserved_huge_pages = node:1,size:4,count:524160 [compute] cpu_shared_set = 0-3,24-27 cpu_dedicated_set = 8-23,32-47 kind: ConfigMap metadata: name: cpu-pinning-nova namespace: openstack --- apiVersion: v1 data: 03-gpu-nova.conf: | # CHANGEME [pci] device_spec = {"vendor_id":"10de", "product_id":"20f1", "address": "CHANGEME" } alias = { "vendor_id":"10de", "product_id":"20f1", "device_type":"type-PF", "name":"nvidia_a2" } report_in_placement = True kind: ConfigMap metadata: name: gpu-nova namespace: openstack --- apiVersion: v1 data: NodeRootPassword: cmVkaGF0Cg== kind: Secret metadata: name: baremetalset-password-secret namespace: openstack type: Opaque --- apiVersion: v1 data: authorized_keys: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFCTnEzWTR3N1lINTE3MTFFeVhrNHJkV3BrNHhFRHc1VFVOMk80c2pBU01ucURmZHlFUTFMdThhc1BIenFCelJTQm1XcFdJSEFQNzJlNGdqSXB1THZIb0JnRVR3MkxvZWhWdU1wcXNPSFFFWWFvWnEzaWt0cXoyT2pLQldZOVp4bHVLQkZpb1lGQnk0NDVucnNRa2FtUVlzNDd3dXpUeFdmdmhSREhVVVpDbjg3Vlp2dz09IEVEUE0gZGVwbG95IGtleQo= ssh-privatekey: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFyQUFBQUJObFkyUnpZUwoxemFHRXlMVzVwYzNSd05USXhBQUFBQ0c1cGMzUndOVEl4QUFBQWhRUUFUYXQyT01PMkIrZGU5ZFJNbDVPSzNWcVpPTVJBCjhPVTFEZGp1TEl3RWpKNmczM2NoRU5TN3ZHckR4ODZnYzBVZ1pscVZpQndEKzludUlJeUtiaTd4NkFZQkU4Tmk2SG9WYmoKS2FyRGgwQkdHcUdhdDRwTGFzOWpveWdWbVBXY1piaWdSWXFHQlFjdU9PWjY3RUpHcGtHTE9POExzMDhWbjc0VVF4MUZHUQpwL08xV2I4QUFBRVFzOSsrbnJQZnZwNEFBQUFUWldOa2MyRXRjMmhoTWkxdWFYTjBjRFV5TVFBQUFBaHVhWE4wY0RVeU1RCkFBQUlVRUFFMnJkampEdGdmblh2WFVUSmVUaXQxYW1UakVRUERsTlEzWTdpeU1CSXllb045M0lSRFV1N3hxdzhmT29ITkYKSUdaYWxZZ2NBL3ZaN2lDTWltNHU4ZWdHQVJQRFl1aDZGVzR5bXF3NGRBUmhxaG1yZUtTMnJQWTZNb0ZaajFuR1c0b0VXSwpoZ1VITGpqbWV1eENScVpCaXpqdkM3TlBGWisrRkVNZFJSa0tmenRWbS9BQUFBUVJLaUszVG5ZbTk5K1RSWnFEUVA5L3NHCm9YUVczeHcyUTlzM1lvK0x2Z2hPVEl4ZCs3enJHSGZabi8wY2lkUmJkSnJXNk5TcHR3cTZFMWpHR01PR0xXN0NBQUFBRDAKVkVVRTBnWkdWd2JHOTVJR3RsZVFFQ0F3UT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== ssh-publickey: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFCTnEzWTR3N1lINTE3MTFFeVhrNHJkV3BrNHhFRHc1VFVOMk80c2pBU01ucURmZHlFUTFMdThhc1BIenFCelJTQm1XcFdJSEFQNzJlNGdqSXB1THZIb0JnRVR3MkxvZWhWdU1wcXNPSFFFWWFvWnEzaWt0cXoyT2pLQldZOVp4bHVLQkZpb1lGQnk0NDVucnNRa2FtUVlzNDd3dXpUeFdmdmhSREhVVVpDbjg3Vlp2dz09IEVEUE0gZGVwbG95IGtleQo= kind: Secret metadata: name: dataplane-ansible-ssh-private-key-secret namespace: openstack type: Opaque --- apiVersion: v1 kind: Secret metadata: name: edpm-compute-0-network-data namespace: openstack stringData: networkData: | CHANGEME type: Opaque --- apiVersion: v1 data: LibvirtPassword: MTIzNDU2Nzg= kind: Secret metadata: name: libvirt-secret namespace: openstack type: Opaque --- apiVersion: v1 data: ssh-privatekey: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFyQUFBQUJObFkyUnpZUwoxemFHRXlMVzVwYzNSd05USXhBQUFBQ0c1cGMzUndOVEl4QUFBQWhRUUJrazZDalBOTHhCd1pOOEs2NTRKd09XQ04rUGEyCm83N1kzNUI4RXQ1bEpSQ2VFWElLQXJWRjlRdUttdnZyQ3BUcVFxTllIdkZEWU1UVFZHZmlUQi9Qa2ZVQUZNaFlsbHFjbzMKRE1GNExkYkdQbDI4L3lHQkgyand6c2dMaXJhUEZ1SkxUb0ZWYkRUU3ZUcThSazNNaTlLK1pxcGhzOVZ6eWhNNnVnT1NSUwp5SzlwT0lZQUFBRVFFeWpHSUJNb3hpQUFBQUFUWldOa2MyRXRjMmhoTWkxdWFYTjBjRFV5TVFBQUFBaHVhWE4wY0RVeU1RCkFBQUlVRUFaSk9nb3p6UzhRY0dUZkN1dWVDY0RsZ2pmajJ0cU8rMk4rUWZCTGVaU1VRbmhGeUNnSzFSZlVMaXByNzZ3cVUKNmtLaldCN3hRMkRFMDFSbjRrd2Z6NUgxQUJUSVdKWmFuS053ekJlQzNXeGo1ZHZQOGhnUjlvOE03SUM0cTJqeGJpUzA2QgpWV3cwMHIwNnZFWk56SXZTdm1hcVliUFZjOG9UT3JvRGtrVXNpdmFUaUdBQUFBUWdHMXVQdlloU3pCVkh1VnlES2pvWXJ3CjlzeUFnalVGWDF6cHFsdDZ1SEpoM0tsWXBCVVZnZ0gwMDNtUC9ZcXZGclh4N2U3cHpNQVMwekxSb1VDQStjeTU5Z0FBQUEKNU9iM1poSUcxcFozSmhkR2x2YmdFQ0F3UT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== ssh-publickey: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFHU1RvS004MHZFSEJrM3dycm5nbkE1WUkzNDlyYWp2dGpma0h3UzNtVWxFSjRSY2dvQ3RVWDFDNHFhKytzS2xPcENvMWdlOFVOZ3hOTlVaK0pNSDgrUjlRQVV5RmlXV3B5amNNd1hndDFzWStYYnovSVlFZmFQRE95QXVLdG84VzRrdE9nVlZzTk5LOU9yeEdUY3lMMHI1bXFtR3oxWFBLRXpxNkE1SkZMSXIyazRoZz09IE5vdmEgbWlncmF0aW9uCg== kind: Secret metadata: name: nova-migration-ssh-key namespace: openstack type: kubernetes.io/ssh-auth --- apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneNodeSet metadata: name: gpu-computes-edpm namespace: openstack spec: baremetalSetTemplate: bmhLabelSelector: app: openstack bmhNamespace: openstack cloudUserName: cloud-admin ctlplaneInterface: bond0 passwordSecret: name: baremetalset-password-secret namespace: openstack env: - name: ANSIBLE_FORCE_COLOR value: "True" networkAttachments: - ctlplane nodeTemplate: ansible: ansiblePort: 22 ansibleUser: zuul ansibleVars: dns_search_domains: [] edpm_bootstrap_command: | echo CHANGEME edpm_bootstrap_release_version_package: [] edpm_ceph_hci_pre_enabled_services: - ceph_mon - ceph_mgr - ceph_osd - ceph_rgw - ceph_nfs - ceph_rgw_frontend - ceph_nfs_frontend edpm_enable_chassis_gw: false edpm_fips_mode: check edpm_kernel_args: default_hugepagesz=1GB hugepagesz=1G hugepages=16 intel_iommu=on iommu=pt vfio-pci.ids=10de:20f1 rd.driver.pre=vfio-pci edpm_network_config_hide_sensitive_logs: false edpm_network_config_nmstate: false edpm_network_config_os_net_config_mappings: edpm-compute-0: nic1: aa:bb:cc:dd:ee:ff nic2: CHANGEME edpm_network_config_template: | --- {% set mtu_list = [ctlplane_mtu] %} {% for network in nodeset_networks %} {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }} {%- endfor %} {% set min_viable_mtu = mtu_list | max %} network_config: - type: ovs_bridge name: {{ neutron_physical_bridge_name }} mtu: {{ min_viable_mtu }} use_dhcp: false dns_servers: {{ ctlplane_dns_nameservers }} domain: {{ dns_search_domains }} addresses: - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_cidr }} routes: {{ ctlplane_host_routes }} members: - type: linux_bond name: bond0 mtu: {{ min_viable_mtu }} bonding_options: "mode=802.3ad lacp_rate=fast" members: - type: interface name: nic1 mtu: {{ min_viable_mtu }} primary: true - type: interface name: nic2 mtu: {{ min_viable_mtu }} {% for network in nodeset_networks %} - type: vlan mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }} addresses: - ip_netmask: {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} {% endfor %} edpm_network_config_update: false edpm_nodes_validation_validate_controllers_icmp: false edpm_nodes_validation_validate_gateway_icmp: false edpm_ovn_availability_zones: [] edpm_ovn_bridge_mappings: - datacentre:br-ex edpm_reboot_strategy: force edpm_sshd_allowed_ranges: - 192.168.122.0/24 edpm_sshd_configure_firewall: true edpm_tuned_isolated_cores: 4-23,28-47 edpm_tuned_profile: cpu-partitioning-powersave gather_facts: false neutron_physical_bridge_name: br-ex neutron_public_interface_name: eth0 rhc_release: 9.4 rhc_repositories: - name: '*' state: disabled - name: CHANGEME storage_mgmt_cidr: CHANGEME_STGMGMT_PREFIX_LEN storage_mgmt_host_routes: [] storage_mgmt_mtu: 9000 storage_mgmt_vlan_id: CHANGEME_STGMGMT_VLAN storage_mtu: 9000 timesync_ntp_servers: - hostname: pool.ntp.org ansibleSSHPrivateKeySecret: dataplane-ansible-ssh-private-key-secret managementNetwork: ctlplane networks: - defaultRoute: true name: ctlplane subnetName: subnet2 - name: internalapi subnetName: subnet2 - name: storage subnetName: subnet2 - name: tenant subnetName: subnet2 nodes: edpm-compute-0: ansible: ansibleHost: 192.168.122.100 bmhLabelSelector: nodeName: edpm-compute-0 hostName: compute-0 networkData: name: edpm-compute-0-network-data namespace: openstack networks: - defaultRoute: true fixedIP: 192.168.122.100 name: ctlplane subnetName: subnet1 - fixedIP: 172.17.0.100 name: internalapi subnetName: subnet1 - fixedIP: 172.18.0.100 name: storage subnetName: subnet1 - fixedIP: 172.20.0.100 name: storagemgmt subnetName: subnet1 - fixedIP: 172.19.0.100 name: tenant subnetName: subnet1 - fixedIP: 10.0.0.100 name: external subnetName: subnet1 preProvisioned: false services: - vfio-pci-bind - bootstrap - download-cache - configure-network - validate-network - install-os - ceph-hci-pre - configure-os - ssh-known-hosts - run-os - reboot-os - install-certs --- apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneService metadata: name: vfio-pci-bind namespace: openstack spec: playbookContents: | - name: Bind vfio-pci to devices hosts: all tasks: - name: Blacklist nouveau and nvidia become: true ansible.builtin.copy: dest: "/etc/modprobe.d/blacklist-nvidia.conf" mode: "0644" content: |- blacklist nouveau blacklist nvidia options nouveau modeset=0 force: false register: _blacklist_nvidia - name: Ensure vfio and vfio-pci modules are loaded at boot become: true ansible.builtin.copy: dest: /etc/modules-load.d/vfio.conf mode: "0644" content: | vfio vfio-pci force: false register: _load_vfio - name: Check if grub2-mkconfig has --update-bls-cmdline option ansible.builtin.shell: cmd: grub2-mkconfig --help | grep '\-\-update-bls-cmdline' ignore_errors: true register: check_update_bls_cmdline changed_when: false - name: Regenerate initramfs become: true ansible.builtin.command: "{{ item }}" loop: - 'dracut --force' - >- grub2-mkconfig -o /boot/grub2/grub.cfg {{ '--update-bls-cmdline' if check_update_bls_cmdline.rc == 0 else '' }} when: (_blacklist_nvidia.changed or _load_vfio.changed)