diff --git a/playbooks/on-off/r8152.yml b/playbooks/on-off/r8152.yml index b1a25a38..df91a5e8 100644 --- a/playbooks/on-off/r8152.yml +++ b/playbooks/on-off/r8152.yml @@ -2,4 +2,4 @@ - hosts: all become: yes roles: - - { role: mgrote.r8152_kernel_module } + - { role: mgrote.r8152_kernel_module_on_off } diff --git a/roles/mgrote.r8152_kernel_module_on_off/README.md b/roles/mgrote.r8152_kernel_module_on_off/README.md new file mode 100644 index 00000000..982e8da6 --- /dev/null +++ b/roles/mgrote.r8152_kernel_module_on_off/README.md @@ -0,0 +1,16 @@ +## mgrote.r8152_kernel_module + +### Beschreibung +Installiert das Module r8152 für die 2.5G USB-C Ethernetkarte DN3025 von Digitus. +Startet den PC neu. + +### Funktioniert auf +- [x] ProxMox 6.1 + +### Variablen + Defaults +see [defaults](./defaults/main.yml) + +``r8152_module_needed`` muss pro Host gesetzt werden. + +### Siehe auch + * [Link zum Treiber](https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software) diff --git a/roles/mgrote.r8152_kernel_module_on_off/defaults/main.yml b/roles/mgrote.r8152_kernel_module_on_off/defaults/main.yml new file mode 100644 index 00000000..d4f0dee8 --- /dev/null +++ b/roles/mgrote.r8152_kernel_module_on_off/defaults/main.yml @@ -0,0 +1,11 @@ +--- + r8152_filename: r8152.53.56-2.15.0 + r8152_packages: + - pve-headers + - build-essential + - make + r8152_reboot_timeout: 90 + r8152_pre_reboot_delay: 120 + r8152_post_reboot_delay: 60 + r8152_module_needed: false + r8152_safekeeping_reboot_delay: 12 diff --git a/roles/mgrote.r8152_kernel_module_on_off/files/r8152.53.56-2.15.0.tar.bz2 b/roles/mgrote.r8152_kernel_module_on_off/files/r8152.53.56-2.15.0.tar.bz2 new file mode 100644 index 00000000..6a85f32a Binary files /dev/null and b/roles/mgrote.r8152_kernel_module_on_off/files/r8152.53.56-2.15.0.tar.bz2 differ diff --git a/roles/mgrote.r8152_kernel_module_on_off/meta/main.yml b/roles/mgrote.r8152_kernel_module_on_off/meta/main.yml new file mode 100644 index 00000000..b4b6cedb --- /dev/null +++ b/roles/mgrote.r8152_kernel_module_on_off/meta/main.yml @@ -0,0 +1,3 @@ +--- + collections: + - community.general diff --git a/roles/mgrote.r8152_kernel_module_on_off/tasks/doing.yml b/roles/mgrote.r8152_kernel_module_on_off/tasks/doing.yml new file mode 100644 index 00000000..640f7baf --- /dev/null +++ b/roles/mgrote.r8152_kernel_module_on_off/tasks/doing.yml @@ -0,0 +1,83 @@ +--- + - name: install needed packages + become: yes + ansible.builtin.package: + name: "{{ r8152_packages }}" + state: present + register: aptp + + + - name: add reboot(for safekeeping) + become: yes + ansible.builtin.shell: shutdown -r "{{ r8152_safekeeping_reboot_delay }}" + + - name: update apt cache + become: yes + ansible.builtin.apt: + update_cache: yes + register: aptc + + - name: updated installed packages + become: yes + ansible.builtin.package: + upgrade: dist + register: apti + + - name: reboot - 1 + ansible.builtin.reboot: + reboot_timeout: "{{ r8152_reboot_timeout }}" + pre_reboot_delay: "{{ r8152_reboot_timeout }}" + post_reboot_delay: "{{ r8152_post_reboot_delay }}" + when: + - aptp.changed + - apti.changed + - aptc.changed + + - name: create dirs + ansible.builtin.file: + path: "{{ item }}" + state: directory + loop: + - "/tmp/r8152/" + - "/lib/modules/r8152/{{ r8152_filename }}" + + - name: copy archive + become: yes + ansible.builtin.copy: + src: "files/{{ r8152_filename }}.tar.bz2" + dest: "/tmp/r8152/{{ r8152_filename }}.tar.bz2" + mode: '0775' + + - name: extract archive + become: yes + ansible.builtin.unarchive: + src: "/tmp/r8152/{{ r8152_filename }}.tar.bz2" + dest: "/lib/modules/r8152/{{ r8152_filename }}" + mode: a+x + extra_opts: [--strip-components=1] # entfernt die erste Ebene des Archives + remote_src: yes #datei liegt also auf dem zielsystem + + - name: make + community.general.make: + chdir: "/lib/modules/r8152/{{ r8152_filename }}" + become: yes + + - name: make install + community.general.make: + chdir: "/lib/modules/r8152/{{ r8152_filename }}" + target: install + become: yes + + - name: depmod -a + become: yes + ansible.builtin.shell: depmod -a + + - name: reboot - 2 + ansible.builtin.reboot: + reboot_timeout: "{{ r8152_reboot_timeout }}" + pre_reboot_delay: "{{ r8152_reboot_timeout }}" + post_reboot_delay: "{{ r8152_post_reboot_delay }}" + + - name: cancel reboot(for safekeeping) + become: yes + ansible.builtin.shell: shutdown -c diff --git a/roles/mgrote.r8152_kernel_module_on_off/tasks/main.yml b/roles/mgrote.r8152_kernel_module_on_off/tasks/main.yml new file mode 100644 index 00000000..b2a23c31 --- /dev/null +++ b/roles/mgrote.r8152_kernel_module_on_off/tasks/main.yml @@ -0,0 +1,16 @@ +--- + - name: check if module is installed - folder + become: yes + stat: + path: "/lib/modules/r8152/{{ r8152_filename }}" + register: folder_exists + + - name: check if module is installed - lsmod + become: yes + ansible.builtin.shell: lsmod + register: module_in_lsmod + changed_when: False # sorgt dafür das der Task nie als "changed" angezeigt wird + + - name: include tasks (task get skipped if the folder or the module exists or r8152_module_needed == false) + include_tasks: doing.yml + when: ((folder_exists.stat.exists == False) or (module_in_lsmod.stdout.find('r8152') == -1)) and (r8152_module_needed == true)