From 309c9dc0cacd3ab59a36948700fdc19792ddde4a Mon Sep 17 00:00:00 2001 From: Lukas Bezdicka Date: Thu, 8 Jun 2023 10:12:16 +0200 Subject: [PATCH] [ffwd3] Prevent renaming nics with specific prefix On some HW we have nics changing name during system upgrade. This breaks network and in order to prevent this we allow specifying list of NIC prefixes to generate udev rules in order to prevent the rename. Example would be node with enoX ensY and enpZ interfaces where we tested on preprod that eno and enp keep renaming. In this case we would set in system_upgrade.yaml: parameter_defaults: NICsPrefixesToUdev: ['eno','enp'] Co-Authored-By: Sergii Golovatiuk Change-Id: I5d7b731a2a284c817a8618a685a27b0a54dfc86b Related-Bug: rhbz#2142760 --- .../tripleo-packages-baremetal-puppet.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/deployment/tripleo-packages/tripleo-packages-baremetal-puppet.yaml b/deployment/tripleo-packages/tripleo-packages-baremetal-puppet.yaml index cbb0899780..94a48c4ee7 100644 --- a/deployment/tripleo-packages/tripleo-packages-baremetal-puppet.yaml +++ b/deployment/tripleo-packages/tripleo-packages-baremetal-puppet.yaml @@ -112,6 +112,14 @@ parameters: default: '' tags: - role_specific + NICsPrefixesToUdev: + default: [] + description: | + List of NIC prefixes to hardcode into udev in order to prevent + renaming. + type: comma_delimited_list + tags: + - role_specific UpgradeInitCommand: type: string description: | @@ -169,6 +177,7 @@ resources: upgrade_leapp_to_install: UpgradeLeappToInstall leapp_repo_init_command: LeappRepoInitCommand leapp_init_command: LeappInitCommand + nics_prefixes_to_keep: NICsPrefixesToUdev upgrade_leapp_modules_to_unload: LeappUnloadKernelDrivers upgrade_leapp_actors_to_remove: LeappActorsToRemove upgrade_init_command: UpgradeInitCommand @@ -185,6 +194,7 @@ resources: UpgradeInitCommand: {get_param: UpgradeInitCommand} LeappRepoInitCommand: {get_param: LeappRepoInitCommand} LeappInitCommand: {get_param: LeappInitCommand} + NICsPrefixesToUdev: {get_param: NICsPrefixesToUdev} BaseTripleoPackages: {get_param: BaseTripleoPackages} outputs: @@ -333,6 +343,15 @@ outputs: dest: /boot/grub2/grubenv state: link force: true + - name: Keep nics with prefix in NICsPrefixesToUdev from renaming + vars: + nics_prefixes_to_keep: {get_attr: [RoleParametersValue, value, 'nics_prefixes_to_keep']} + # (.ifname | test("^.*\\..*$") | not) removes vlan nics like ens1.1 + # (.ifname | test("^.*v[0-9]*$") | not) removes virtual function nics ens1v1 + # (.ifname | test("^.*_[0-9]*$") | not) also removes virtual function nics ens1_1 + shell: > + ip -j link show | jq -r --arg prefix "{{ item }}" '.[] | select((.ifname | startswith($prefix)) and (.ifname | test("^.*v[0-9]*$")|not) and (.ifname | test("^.*_[0-9]*$") | not) and (.ifname | test("^.*\\..*$") | not)) | "SUBSYSTEM==\"net\",ACTION==\"add\",DRIVERS==\"?*\"," + "NAME=\"" + .ifname +"\" ,ATTR{address}==\"" + .address + "\""' >> /etc/udev/rules.d/70-rhosp-persistent-net.rules + loop: "{{ nics_prefixes_to_keep|list }}" - name: run leapp upgrade (download packages) shell: > {% if upgrade_leapp_devel_skip|default(false) %}{{ upgrade_leapp_devel_skip }}{% endif %}