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: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFIRWNzVkIrVkwyM0diQVQ0TWE4Z04zU3VWV293QzNud0YwN3ZLMng4WkJsczBURWlDM1ZLQTVBQjdmU29qZmg0ZGdXMXZyUmNJMU5oZlpoK1FUV2lMcjJ3QXNHelVlTDdMNGZBN1FpdVdSS2duUzZXeDVHYnp2ajVCbW4waUZKelcrbmM3RkxiSzRjMzAzQ2M0cFFESFBvczdRQXp4c0NVajdHQnpGYit6L2g4dkg5UT09IEVEUE0gZGVwbG95IGtleQo= ssh-privatekey: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFyQUFBQUJObFkyUnpZUwoxemFHRXlMVzVwYzNSd05USXhBQUFBQ0c1cGMzUndOVEl4QUFBQWhRUUJ4SExGUWZsUzl0eG13RStER3ZJRGQwcmxWcU1BCnQ1OEJkTzd5dHNmR1FaYk5FeElndDFTZ09RQWUzMHFJMzRlSFlGdGI2MFhDTlRZWDJZZmtFMW9pNjlzQUxCczFIaSt5K0gKd08wSXJsa1NvSjB1bHNlUm04NzQrUVpwOUloU2MxdnAzT3hTMnl1SE45TnduT0tVQXh6NkxPMEFNOGJBbEkreGdjeFcvcwovNGZMeC9VQUFBRVFJTFN2eHlDMHI4Y0FBQUFUWldOa2MyRXRjMmhoTWkxdWFYTjBjRFV5TVFBQUFBaHVhWE4wY0RVeU1RCkFBQUlVRUFjUnl4VUg1VXZiY1pzQlBneHJ5QTNkSzVWYWpBTGVmQVhUdThyYkh4a0dXelJNU0lMZFVvRGtBSHQ5S2lOK0gKaDJCYlcrdEZ3alUyRjltSDVCTmFJdXZiQUN3Yk5SNHZzdmg4RHRDSzVaRXFDZExwYkhrWnZPK1BrR2FmU0lVbk5iNmR6cwpVdHNyaHpmVGNKemlsQU1jK2l6dEFEUEd3SlNQc1lITVZ2N1ArSHk4ZjFBQUFBUWdDSytLWmlBK3ErOENiWHFHSE5NUFRYCkhmd1g5OGd3S2NZOWUrWVB4cnQzVGJveUsrOVNrMENMYkxjdDNwYWg2dkJzNEsxSGM2b1UyWllCRm5oODJFTTQ1UUFBQUEKOUZSRkJOSUdSbGNHeHZlU0JyWlhrQkFnTT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== ssh-publickey: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFIRWNzVkIrVkwyM0diQVQ0TWE4Z04zU3VWV293QzNud0YwN3ZLMng4WkJsczBURWlDM1ZLQTVBQjdmU29qZmg0ZGdXMXZyUmNJMU5oZlpoK1FUV2lMcjJ3QXNHelVlTDdMNGZBN1FpdVdSS2duUzZXeDVHYnp2ajVCbW4waUZKelcrbmM3RkxiSzRjMzAzQ2M0cFFESFBvczdRQXp4c0NVajdHQnpGYit6L2g4dkg5UT09IEVEUE0gZGVwbG95IGtleQo= 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: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFyQUFBQUJObFkyUnpZUwoxemFHRXlMVzVwYzNSd05USXhBQUFBQ0c1cGMzUndOVEl4QUFBQWhRUUFyVGZEUDZOT0dqSzdwckhrbDBiVG5zTEVNNHp0Cmo4VTJ6NWdLNTRpUFhobVcwNmlNSm5PaC9OQjVwZUdlRkZ2RjlyaTM1K3o1cUlXNXpwNm9uUDlOc2lnQWl4MENRNkJJM2MKcjMzaWRUelNQRktlM1oyeU04NFYreFVDdU9uRWhDS1hRc3BhQW1EU3ZIbHpraXovMHhwNklsaFRnNXdlcmJIMi9EUUNMTwp1cW4wUzRVQUFBRVF3NGhYa2NPSVY1RUFBQUFUWldOa2MyRXRjMmhoTWkxdWFYTjBjRFV5TVFBQUFBaHVhWE4wY0RVeU1RCkFBQUlVRUFLMDN3eitqVGhveXU2YXg1SmRHMDU3Q3hET003WS9GTnMrWUN1ZUlqMTRabHRPb2pDWnpvZnpRZWFYaG5oUmIKeGZhNHQrZnMrYWlGdWM2ZXFKei9UYklvQUlzZEFrT2dTTjNLOTk0blU4MGp4U250MmRzalBPRmZzVkFyanB4SVFpbDBMSwpXZ0pnMHJ4NWM1SXMvOU1hZWlKWVU0T2NIcTJ4OXZ3MEFpenJxcDlFdUZBQUFBUWdHc2t6ZjJFdU5FRU9Vck1xR1pyZmJtCkhVN2lVOVRORGEvN2JwYU5GbTlJQnN5ZUhVd1BodU1wUFJEVDlReHcrRk1CWnREa2dXMU1IK25WQXB3QW5ZV2VDQUFBQUEKNU9iM1poSUcxcFozSmhkR2x2YmdFQ0F3UT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== ssh-publickey: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFDdE44TS9vMDRhTXJ1bXNlU1hSdE9ld3NRempPMlB4VGJQbUFybmlJOWVHWmJUcUl3bWM2SDgwSG1sNFo0VVc4WDJ1TGZuN1Btb2hibk9ucWljLzAyeUtBQ0xIUUpEb0VqZHl2ZmVKMVBOSThVcDdkbmJJenpoWDdGUUs0NmNTRUlwZEN5bG9DWU5LOGVYT1NMUC9UR25vaVdGT0RuQjZ0c2ZiOE5BSXM2NnFmUkxoUT09IE5vdmEgbWlncmF0aW9uCg== 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)