preseed: debian buster names interfaces differently than stretch and in a way that...
[noc.git] / ansible / roles / preseed / tasks / main.yml
index d458d49..fbe25a8 100644 (file)
@@ -1,40 +1,47 @@
-- block:
-    - name: Make a temporary directory
-      command: mktemp -d
-      register: tmpdir
+---
+- name: Copy initramfs into position
+  copy:
+    remote_src: yes
+    src: "{{ debian_installer_path | mandatory }}/{{ install_distro }}-{{ install_codename }}/{{ hostvars[hostname].install_cooked.arch | default('amd64') }}/initrd.gz"
+    dest: "{{ preseed_tmpdir }}/initrd.preseed.gz"
 
-    - set_fact:
-        tmpdir: "{{ tmpdir.stdout }}"
-        initramfs: "{{ preseed_path | mandatory }}/{{ hostname }}-{{ distro }}-{{ distcodename }}.initrd.gz"
+- name: Generate preseed file
+  template:
+    src: "preseed_{{ install_distro }}-{{ install_codename }}.cfg.j2"
+    dest: "{{ preseed_tmpdir }}/preseed.cfg"
 
-    - name: Copy initramfs into position
-      copy:
-        remote_src: yes
-        src: "{{ debian_installer_path | mandatory }}/{{ distro }}-{{ distcodename }}/{{ install.arch | default('amd64') }}/initrd.gz"
-        dest: "{{ initramfs }}"
+- name: Generate authorized_keys file
+  authorized_key:
+    user: root
+    manage_dir: no
+    path: "{{ preseed_tmpdir }}/authorized_keys"
+    key: "{{ ssh_users_root | user_ssh_keys(users) | join('\n') }}"
 
-    - name: Generate preseed file
-      template:
-        src: "preseed_{{ distro }}-{{ distcodename }}.cfg.j2"
-        dest: "{{ tmpdir }}/preseed.cfg"
+- name: force net interface name policy
+  when: preseed_force_net_ifnames_policy is defined
+  block:
+  - name: prepare directories to force network interface name policy
+    file:
+      path: "{{ preseed_tmpdir }}/etc/systemd/network"
+      state: directory
 
-    - name: Generate authorized_keys file
-      authorized_key:
-        user: root
-        manage_dir: no
-        path: "{{ tmpdir }}/authorized_keys"
-        key: "{{ ssh_keys | join('\n') }}"
+  - name: install link unit to force network interface name policy
+    copy:
+      dest: "{{ preseed_tmpdir }}/etc/systemd/network/90-namepolicy.link"
+      content: |
+        [Link]
+        NamePolicy={{ preseed_force_net_ifnames_policy }}
 
-    - name: Inject files into initramfs
-      shell: cpio -H newc -o | gzip -9 >> '{{ initramfs }}'
-      args:
-        chdir: "{{ tmpdir }}"
-        stdin: |
-          preseed.cfg
-          authorized_keys
-
-  always:
-    - name: Delete temporary directory
-      file:
-        path: "{{ tmpdir }}"
-        state: absent
+- name: Inject files into initramfs
+  shell: cpio -H newc -o | gzip -9 >> 'initrd.preseed.gz'
+  args:
+    chdir: "{{ preseed_tmpdir }}"
+    stdin: |
+      preseed.cfg
+      authorized_keys
+      etc/
+      etc/systemd/
+      etc/systemd/network/
+      etc/systemd/network/90-namepolicy.link
+  tags:
+  - skip_ansible_lint