From fce6ae3a7ab036295ab1cceb6b0ebafbe3847d11 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 6 Jan 2018 15:42:38 +0100 Subject: greatly improved dkms handling --- roles/kubernetes-base/meta/main.yml | 2 +- roles/kubernetes-net/meta/main.yml | 2 +- .../prepare-dkms/files/my_scw-fetch-kernel-sources | 29 +++++++++++++++++++++ roles/prepare-dkms/handlers/main.yml | 3 +++ roles/prepare-dkms/tasks/scaleway.yml | 30 ++++++++++++++++++++++ .../files/my_scw-fetch-kernel-sources | 23 ----------------- roles/scaleway-dkms/handlers/main.yml | 3 --- roles/scaleway-dkms/tasks/main.yml | 26 ------------------- roles/wireguard/meta/main.yml | 3 ++- 9 files changed, 66 insertions(+), 55 deletions(-) create mode 100644 roles/prepare-dkms/files/my_scw-fetch-kernel-sources create mode 100644 roles/prepare-dkms/handlers/main.yml create mode 100644 roles/prepare-dkms/tasks/scaleway.yml delete mode 100644 roles/scaleway-dkms/files/my_scw-fetch-kernel-sources delete mode 100644 roles/scaleway-dkms/handlers/main.yml delete mode 100644 roles/scaleway-dkms/tasks/main.yml (limited to 'roles') diff --git a/roles/kubernetes-base/meta/main.yml b/roles/kubernetes-base/meta/main.yml index cb7d8e04..724b20f1 100644 --- a/roles/kubernetes-base/meta/main.yml +++ b/roles/kubernetes-base/meta/main.yml @@ -1,3 +1,3 @@ --- dependencies: - - role: docker +- role: docker diff --git a/roles/kubernetes-net/meta/main.yml b/roles/kubernetes-net/meta/main.yml index eb6e41ca..b5a72b6e 100644 --- a/roles/kubernetes-net/meta/main.yml +++ b/roles/kubernetes-net/meta/main.yml @@ -1,3 +1,3 @@ --- dependencies: - - role: wireguard +- role: wireguard diff --git a/roles/prepare-dkms/files/my_scw-fetch-kernel-sources b/roles/prepare-dkms/files/my_scw-fetch-kernel-sources new file mode 100644 index 00000000..1b5333b5 --- /dev/null +++ b/roles/prepare-dkms/files/my_scw-fetch-kernel-sources @@ -0,0 +1,29 @@ +#!/bin/bash + +# this is based on: +# https://github.com/scaleway/kernel-tools#how-to-build-a-custom-kernel-module + +set -e + +# Determine versions +arch="$(uname -m)" +release="$(uname -r)" +upstream="${release%%-*}" +local="${release#*-}" + +export PATH="${PATH:+$PATH:}/usr/bin:/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin" + +# Get kernel sources +mkdir -p /usr/src +rm -f "/usr/src/linux-${upstream}.tar.xz" +rm -rf "/usr/src/linux-${upstream}" +wget -O "/usr/src/linux-${upstream}.tar.xz" "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${upstream}.tar.xz" +tar xf "/usr/src/linux-${upstream}.tar.xz" -C /usr/src/ +ln -fns "/usr/src/linux-${upstream}" /usr/src/linux +ln -fns "/usr/src/linux-${upstream}" "/lib/modules/${release}/build" + +# Prepare kernel +zcat /proc/config.gz > /usr/src/linux/.config +printf 'CONFIG_LOCALVERSION="%s"\nCONFIG_CROSS_COMPILE=""\n' "${local:+-$local}" >> /usr/src/linux/.config +wget -O /usr/src/linux/Module.symvers "http://mirror.scaleway.com/kernel/${arch}/${release}/Module.symvers" +make -C /usr/src/linux prepare modules_prepare diff --git a/roles/prepare-dkms/handlers/main.yml b/roles/prepare-dkms/handlers/main.yml new file mode 100644 index 00000000..ab281326 --- /dev/null +++ b/roles/prepare-dkms/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: fetch scaleway kernel sources + command: /usr/local/sbin/my_scw-fetch-kernel-sources diff --git a/roles/prepare-dkms/tasks/scaleway.yml b/roles/prepare-dkms/tasks/scaleway.yml new file mode 100644 index 00000000..57626d15 --- /dev/null +++ b/roles/prepare-dkms/tasks/scaleway.yml @@ -0,0 +1,30 @@ +--- +- name: install build deps and dkms + with_items: + - build-essential + - libssl-dev + - dkms + apt: + name: "{{ item }}" + state: present + +- name: install (sadly missing) script to fetch kernel sources + copy: + src: my_scw-fetch-kernel-sources + dest: /usr/local/sbin/ + mode: 0755 + notify: fetch scaleway kernel sources + +- name: check if sources are already initialized + stat: + path: "/lib/modules/{{ ansible_kernel }}/build" + follow: yes + get_mime: no + get_checksum: no + get_md5: no + register: build_directory + changed_when: build_directory.stat.exists == False + notify: fetch scaleway kernel sources + +- name: fetch kernel sources + meta: flush_handlers diff --git a/roles/scaleway-dkms/files/my_scw-fetch-kernel-sources b/roles/scaleway-dkms/files/my_scw-fetch-kernel-sources deleted file mode 100644 index 7116ae24..00000000 --- a/roles/scaleway-dkms/files/my_scw-fetch-kernel-sources +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# this is based on: -# https://github.com/scaleway/kernel-tools#how-to-build-a-custom-kernel-module - -# Determine versions -arch="$(uname -m)" -release="$(uname -r)" -upstream="${release%%-*}" -local="${release#*-}" - -# Get kernel sources -mkdir -p /usr/src -wget -O "/usr/src/linux-${upstream}.tar.xz" "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${upstream}.tar.xz" -tar xf "/usr/src/linux-${upstream}.tar.xz" -C /usr/src/ -ln -fns "/usr/src/linux-${upstream}" /usr/src/linux -ln -fns "/usr/src/linux-${upstream}" "/lib/modules/${release}/build" - -# Prepare kernel -zcat /proc/config.gz > /usr/src/linux/.config -printf 'CONFIG_LOCALVERSION="%s"\nCONFIG_CROSS_COMPILE=""\n' "${local:+-$local}" >> /usr/src/linux/.config -wget -O /usr/src/linux/Module.symvers "http://mirror.scaleway.com/kernel/${arch}/${release}/Module.symvers" -make -C /usr/src/linux prepare modules_prepare diff --git a/roles/scaleway-dkms/handlers/main.yml b/roles/scaleway-dkms/handlers/main.yml deleted file mode 100644 index 896fe523..00000000 --- a/roles/scaleway-dkms/handlers/main.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -- name: fetch kernel sources - command: /usr/local/sbin/my_scw-fetch-kernel-sources diff --git a/roles/scaleway-dkms/tasks/main.yml b/roles/scaleway-dkms/tasks/main.yml deleted file mode 100644 index 5dda15f6..00000000 --- a/roles/scaleway-dkms/tasks/main.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -- name: install build deps - with_items: - - build-essential - - libssl-dev - apt: - name: "{{ item }}" - state: present - -- name: install (sadly missing) script to fetch kernel sources - copy: - src: my_scw-fetch-kernel-sources - dest: /usr/local/sbin/ - mode: 0755 - notify: fetch kernel sources - -- name: check if sources are already initialized - stat: - path: "/lib/modules/{{ ansible_kernel }}/build" - follow: yes - register: build_directory - changed_when: build_directory.stat.exists == False - notify: fetch kernel sources - -- name: fetch kernel sources - meta: flush_handlers diff --git a/roles/wireguard/meta/main.yml b/roles/wireguard/meta/main.yml index 7ffc16ea..70dae42d 100644 --- a/roles/wireguard/meta/main.yml +++ b/roles/wireguard/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - - role: spreadspace-apt-repo +- role: prepare-dkms +- role: spreadspace-apt-repo -- cgit v1.2.3