From 7b9fb62784b91ba3bb4fcfae16f7013c0d2a546a Mon Sep 17 00:00:00 2001 From: guenthgr Date: Tue, 16 Aug 2022 15:09:07 +0200 Subject: [PATCH] Allow specifying the variant for the ubuntu drivers Signed-off-by: guenthgr --- .gitignore | 1 + README.md | 39 ++++++++++++++++++----------------- defaults/main.yml | 10 +++++---- molecule/default/molecule.yml | 16 +++++++++++++- tasks/install-ubuntu.yml | 2 +- 5 files changed, 43 insertions(+), 25 deletions(-) diff --git a/.gitignore b/.gitignore index a8b42eb..d1188ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.retry +.idea/ diff --git a/README.md b/README.md index 943035e..4eae8fb 100644 --- a/README.md +++ b/README.md @@ -23,24 +23,24 @@ $ ansible-galaxy install nvidia.nvidia_driver ## Role variables -| Variable | Default value | Description | -| -------- | ------------- | ----------- | -| `nvidia_driver_package_state` | `"present"` | Package state for NVIDIA driver packages | -| `nvidia_driver_package_version` | `""` | Package version to install. Note that this should match the actual version of the deb or RPM package to be installed. | -| `nvidia_driver_persistence_mode_on` | `yes` | Whether to enable persistence mode (boolean) | -| `nvidia_driver_skip_reboot` | `no` | Whether to skip rebooting the node during the install | -| `nvidia_driver_module_file` | `"/etc/modprobe.d/nvidia.conf"` | Filename to use for NVIDIA driver parameters | -| `nvidia_driver_module_params` | `""` | Parameters to pass to the NVIDIA driver | -| `nvidia_driver_branch` | `"515"` | Default driver branch to install | +| Variable | Default value | Description | +|-------------------------------------|---------------------------------|-----------------------------------------------------------------------------------------------------------------------| +| `nvidia_driver_package_state` | `"present"` | Package state for NVIDIA driver packages | +| `nvidia_driver_package_version` | `""` | Package version to install. Note that this should match the actual version of the deb or RPM package to be installed. | +| `nvidia_driver_persistence_mode_on` | `yes` | Whether to enable persistence mode (boolean) | +| `nvidia_driver_skip_reboot` | `no` | Whether to skip rebooting the node during the install | +| `nvidia_driver_module_file` | `"/etc/modprobe.d/nvidia.conf"` | Filename to use for NVIDIA driver parameters | +| `nvidia_driver_module_params` | `""` | Parameters to pass to the NVIDIA driver | +| `nvidia_driver_branch` | `"515"` | Default driver branch to install | ### Red Hat specific variables -| Variable | Default value | Description | -| -------- | ------------- | ----------- | -| `epel_package` | `"https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm"` | Package to install to enable EPEL | -| `nvidia_driver_rhel_cuda_repo_baseurl` | `"https://developer.download.nvidia.com/compute/cuda/repos/{{ _rhel_repo_dir }}/"` | Base URL to use for CUDA repo | -| `nvidia_driver_rhel_cuda_repo_gpgkey` | `"https://developer.download.nvidia.com/compute/cuda/repos/{{ _rhel_repo_dir }}/7fa2af80.pub"` | GPG key for the CUDA repo | +| Variable | Default value | Description | +|----------------------------------------|-------------------------------------------------------------------------------------------------------------------|-----------------------------------| +| `epel_package` | `"https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm"` | Package to install to enable EPEL | +| `nvidia_driver_rhel_cuda_repo_baseurl` | `"https://developer.download.nvidia.com/compute/cuda/repos/{{ _rhel_repo_dir }}/"` | Base URL to use for CUDA repo | +| `nvidia_driver_rhel_cuda_repo_gpgkey` | `"https://developer.download.nvidia.com/compute/cuda/repos/{{ _rhel_repo_dir }}/7fa2af80.pub"` | GPG key for the CUDA repo | ### Ubuntu specific variables @@ -48,11 +48,12 @@ For Ubuntu installs, you have the choice of installing from the Canonical reposi By default, the Canonical repositories will be used, and the driver installed will be the headless server driver. -| Variable | Default value | Description | -| -------- | ------------- | ----------- | -| `nvidia_driver_ubuntu_install_from_cuda_repo` | `no` | Flag whether to use the CUDA repo | -| `nvidia_driver_ubuntu_cuda_repo_baseurl` | `"http://developer.download.nvidia.com/compute/cuda/repos/{{ _ubuntu_repo_dir }}"` | Base URL to use for CUDA repo | -| `nvidia_driver_ubuntu_cuda_package` | `"cuda-drivers"` | Package name to install from CUDA repo | +| Variable | Default value | Description | +|-----------------------------------------------|------------------------------------------------------------------------------------|------------------------------------------------------| +| `nvidia_driver_ubuntu_install_from_cuda_repo` | `no` | Flag whether to use the CUDA repo | +| `nvidia_driver_ubuntu_cuda_repo_baseurl` | `"http://developer.download.nvidia.com/compute/cuda/repos/{{ _ubuntu_repo_dir }}"` | Base URL to use for CUDA repo | +| `nvidia_driver_ubuntu_cuda_package` | `"cuda-drivers"` | Package name to install from CUDA repo | +| `nvidia_driver_ubuntu_packages_suffix` | `"-server"` | The suffix added to the apt packages when installing | ## Example playbook diff --git a/defaults/main.yml b/defaults/main.yml index 83fc13a..197aa8d 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -29,12 +29,14 @@ nvidia_driver_ubuntu_branch: "{{ nvidia_driver_branch }}" # Determine if we should install from CUDA repo instead of Canonical repos nvidia_driver_ubuntu_install_from_cuda_repo: no +nvidia_driver_ubuntu_packages_suffix: "-server" + # Installing with Canonical repositories nvidia_driver_ubuntu_packages: -- "nvidia-headless-{{ nvidia_driver_ubuntu_branch }}-server" -- "nvidia-utils-{{ nvidia_driver_ubuntu_branch }}-server" -- "nvidia-headless-no-dkms-{{ nvidia_driver_ubuntu_branch }}-server" -- "nvidia-kernel-source-{{ nvidia_driver_ubuntu_branch }}-server" +- "nvidia-headless-{{ nvidia_driver_ubuntu_branch }}{{ nvidia_driver_ubuntu_packages_suffix }}" +- "nvidia-utils-{{ nvidia_driver_ubuntu_branch }}{{ nvidia_driver_ubuntu_packages_suffix }}" +- "nvidia-headless-no-dkms-{{ nvidia_driver_ubuntu_branch }}{{ nvidia_driver_ubuntu_packages_suffix }}" +- "nvidia-kernel-source-{{ nvidia_driver_ubuntu_branch }}{{ nvidia_driver_ubuntu_packages_suffix }}" # Installing with CUDA repositories old_nvidia_driver_ubuntu_cuda_repo_gpgkey_id: "7fa2af80" diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index a9f3c71..a03ff63 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -27,7 +27,7 @@ platforms: - cuda_repo - ubuntu - - name: ubuntu-2004-canonical + - name: ubuntu-2004-canonical-server image: geerlingguy/docker-ubuntu2004-ansible volumes: - /sys/fs/cgroup:/sys/fs/cgroup:ro @@ -38,6 +38,18 @@ platforms: - canonical_repo - ubuntu + - name: ubuntu-2004-canonical-noserver + image: geerlingguy/docker-ubuntu2004-ansible + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + command: /sbin/init + pre_build_image: true + privileged: true + groups: + - canonical_repo + - canonical_repo_noserver + - ubuntu + - name: ubuntu-2004-cuda image: geerlingguy/docker-ubuntu2004-ansible volumes: @@ -97,6 +109,8 @@ provisioner: nvidia_driver_skip_reboot: true canonical_repo: nvidia_driver_ubuntu_install_from_cuda_repo: false + canonical_repo_noserver: + nvidia_driver_ubuntu_packages_suffix: "" cuda_repo: nvidia_driver_ubuntu_install_from_cuda_repo: true verifier: diff --git a/tasks/install-ubuntu.yml b/tasks/install-ubuntu.yml index bcd0a39..e063250 100644 --- a/tasks/install-ubuntu.yml +++ b/tasks/install-ubuntu.yml @@ -10,6 +10,6 @@ state: "{{ nvidia_driver_package_state }}" autoremove: "{{ nvidia_driver_package_state == 'absent' }}" purge: "{{ nvidia_driver_package_state == 'absent' }}" - with_items: "{{ nvidia_driver_ubuntu_packages }}" + loop: "{{ nvidia_driver_ubuntu_packages }}" register: install_driver environment: "{{proxy_env if proxy_env is defined else {}}}"