From 821aa1aa7a1af439847fcf4f8d1ebacc26891752 Mon Sep 17 00:00:00 2001
From: "Anderson, Craig (ca846m)" <ca846m@att.com>
Date: Thu, 25 Feb 2021 16:15:34 -0800
Subject: [PATCH] Add explicit systemd network names

Ensure NIC naming does not change with systemd versions changing

Change-Id: Ib5b309a37c5ba7b5c606e88aaa01e87c51473f33
---
 .../assets/playbooks/roles/multistrap/defaults/main.yaml | 2 ++
 .../assets/playbooks/roles/multistrap/tasks/main.yaml    | 9 +++++----
 .../roles/multistrap/templates/99-default.link.j2        | 7 +++++++
 3 files changed, 14 insertions(+), 4 deletions(-)
 create mode 100644 image-builder/assets/playbooks/roles/multistrap/templates/99-default.link.j2

diff --git a/image-builder/assets/playbooks/roles/multistrap/defaults/main.yaml b/image-builder/assets/playbooks/roles/multistrap/defaults/main.yaml
index 6ebe8c0..32c76ba 100644
--- a/image-builder/assets/playbooks/roles/multistrap/defaults/main.yaml
+++ b/image-builder/assets/playbooks/roles/multistrap/defaults/main.yaml
@@ -3,6 +3,8 @@ rootfs_arch: amd64
 k8s_version: 1.18.6-00
 kernel_base_pkg: linux-image-generic
 kernel_headers_pkg: linux-headers-generic
+systemd_nic_names_policy: keep kernel database onboard path slot
+systemd_nic_alternative_names_policy: database onboard path slot
 ubuntu_packages:
     - apparmor
     - apt-file
diff --git a/image-builder/assets/playbooks/roles/multistrap/tasks/main.yaml b/image-builder/assets/playbooks/roles/multistrap/tasks/main.yaml
index ddcc360..3083611 100644
--- a/image-builder/assets/playbooks/roles/multistrap/tasks/main.yaml
+++ b/image-builder/assets/playbooks/roles/multistrap/tasks/main.yaml
@@ -56,10 +56,11 @@
   shell:
       cmd: "multistrap -f {{ multistrap_tempdir.path }}/multistrap.conf"
 
-#- name: "create grub.cfg"
-#  shell:
-#    cmd: |
-#        chroot {{ rootfs_root }} update-grub
+- name: "Set systemd NIC naming"
+  template:
+    src: 99-default.link.j2
+    dest: "{{ rootfs_root }}/etc/systemd/network/99-default.link"
+    mode: '0644'
 
 - name: "Lock sources.list to prevent conflict and duplicates with multistrap repo list"
   shell: |
diff --git a/image-builder/assets/playbooks/roles/multistrap/templates/99-default.link.j2 b/image-builder/assets/playbooks/roles/multistrap/templates/99-default.link.j2
new file mode 100644
index 0000000..63a5c6d
--- /dev/null
+++ b/image-builder/assets/playbooks/roles/multistrap/templates/99-default.link.j2
@@ -0,0 +1,7 @@
+[Match]
+OriginalName=*
+
+[Link]
+NamePolicy={{ systemd_nic_names_policy }}
+AlternativeNamesPolicy={{ systemd_nic_alternative_names_policy }}
+MACAddressPolicy=persistent