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: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFGK09Jb2hSVkpwaUYzWjZnR3NpNUQzQW1oSkJWN0NLZnJmZ0hxbEl5bWJYa2ZQbnZvZk9DZmhFUzVMeEtHREpXY29ReFFYd3RPTWQyY2F1ZEFuai91dVRRQklIVTUxaC91by84L1pkcTJQVXJyTzBuWEFSRnI3VWU0Z0JJS0NpQmtjUlY1djRFN0VDSmNzdDB1ejN5WjJwQWlRcXdqUzkyOFYyNWJCZ0U1Z3pvbkxNUT09IEVEUE0gZGVwbG95IGtleQo= ssh-privatekey: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFyQUFBQUJObFkyUnpZUwoxemFHRXlMVzVwYzNSd05USXhBQUFBQ0c1cGMzUndOVEl4QUFBQWhRUUJmamlLSVVWU2FZaGQyZW9Cckl1UTl3Sm9TUVZlCndpbjYzNEI2cFNNcG0xNUh6NTc2SHpnbjRSRXVTOFNoZ3lWbktFTVVGOExUakhkbkdyblFKNC83cmswQVNCMU9kWWY3cVAKL1AyWGF0ajFLNnp0SjF3RVJhKzFIdUlBU0Nnb2daSEVWZWIrQk94QWlYTExkTHM5OG1kcVFJa0tzSTB2ZHZGZHVXd1lCTwpZTTZKeXpFQUFBRVFVTXJzZGxESzdIWUFBQUFUWldOa2MyRXRjMmhoTWkxdWFYTjBjRFV5TVFBQUFBaHVhWE4wY0RVeU1RCkFBQUlVRUFYNDRpaUZGVW1tSVhkbnFBYXlMa1BjQ2FFa0ZYc0lwK3QrQWVxVWpLWnRlUjgrZStoODRKK0VSTGt2RW9ZTWwKWnloREZCZkMwNHgzWnhxNTBDZVArNjVOQUVnZFRuV0grNmovejlsMnJZOVN1czdTZGNCRVd2dFI3aUFFZ29LSUdSeEZYbQovZ1RzUUlseXkzUzdQZkpuYWtDSkNyQ05MM2J4WGJsc0dBVG1ET2ljc3hBQUFBUVFaQTdZaFdpYWlUM0t0WDdibjNQVUFDCnNkbjhsaWRnTzBGWFZTeDJEVEhWNnlEQ2o3UXhOalVqWEVIM05uaDE2MVFOVkdsb3kyQ2UvcnMzT0Q1TmF1WHlBQUFBRDAKVkVVRTBnWkdWd2JHOTVJR3RsZVFFQ0F3UT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== ssh-publickey: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFGK09Jb2hSVkpwaUYzWjZnR3NpNUQzQW1oSkJWN0NLZnJmZ0hxbEl5bWJYa2ZQbnZvZk9DZmhFUzVMeEtHREpXY29ReFFYd3RPTWQyY2F1ZEFuai91dVRRQklIVTUxaC91by84L1pkcTJQVXJyTzBuWEFSRnI3VWU0Z0JJS0NpQmtjUlY1djRFN0VDSmNzdDB1ejN5WjJwQWlRcXdqUzkyOFYyNWJCZ0U1Z3pvbkxNUT09IEVEUE0gZGVwbG95IGtleQo= 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: LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFyQUFBQUJObFkyUnpZUwoxemFHRXlMVzVwYzNSd05USXhBQUFBQ0c1cGMzUndOVEl4QUFBQWhRUUJIVVcyZkpRRGpOT1BMU0VkL0U3M05qV09IaFB4Cnl5eUd6Rllab1p1WXFxamU3amY2N2ZIU1hZUTRBQ0tOL01pUy9iZ3hUZ2FTTEhtZjlDWE9haFBUaXBjQW1WRlZpWklmTUEKOThhSS9tRStKZGhTeXZ4WEVYRXZJejU1dmhuUnlMVjJqdURrSE9MRGNreGdYMjBNWlVRRFVoWVkydXNKSkdFQ05xK28ySQpxU0VKVEhvQUFBRVFqR0pqQkl4aVl3UUFBQUFUWldOa2MyRXRjMmhoTWkxdWFYTjBjRFV5TVFBQUFBaHVhWE4wY0RVeU1RCkFBQUlVRUFSMUZ0bnlVQTR6VGp5MGhIZnhPOXpZMWpoNFQ4Y3NzaHN4V0dhR2JtS3FvM3U0Myt1M3gwbDJFT0FBaWpmekkKa3YyNE1VNEdraXg1bi9RbHptb1QwNHFYQUpsUlZZbVNIekFQZkdpUDVoUGlYWVVzcjhWeEZ4THlNK2ViNFowY2kxZG83Zwo1QnppdzNKTVlGOXRER1ZFQTFJV0dOcnJDU1JoQWphdnFOaUtraENVeDZBQUFBUWdDOHh3ZklkZmJJb1N6S21tdHpXaGttCktUSEJCcmxVQUZ5U2M0RTRlbE84OVhHNDc4NjJOVDFlb1pLeG1BbnB2VVIxd1ArODBZR21jU3NwYnpnS1NVNFRBQUFBQUEKNU9iM1poSUcxcFozSmhkR2x2YmdFQ0F3UT0KLS0tLS1FTkQgT1BFTlNTSCBQUklWQVRFIEtFWS0tLS0tCg== ssh-publickey: ZWNkc2Etc2hhMi1uaXN0cDUyMSBBQUFBRTJWalpITmhMWE5vWVRJdGJtbHpkSEExTWpFQUFBQUlibWx6ZEhBMU1qRUFBQUNGQkFFZFJiWjhsQU9NMDQ4dElSMzhUdmMyTlk0ZUUvSExMSWJNVmhtaG01aXFxTjd1Ti9ydDhkSmRoRGdBSW8zOHlKTDl1REZPQnBJc2VaLzBKYzVxRTlPS2x3Q1pVVldKa2g4d0QzeG9qK1lUNGwyRkxLL0ZjUmNTOGpQbm0rR2RISXRYYU80T1FjNHNOeVRHQmZiUXhsUkFOU0ZoamE2d2trWVFJMnI2allpcElRbE1lZz09IE5vdmEgbWlncmF0aW9uCg== 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)