diff --git a/README.md b/README.md index adf52b1..8b8279a 100644 --- a/README.md +++ b/README.md @@ -44,12 +44,19 @@ $ ansible-galaxy install nvidia.nvidia_driver ### Ubuntu specific variables +For Ubuntu installs, you have the choice of installing from the Canonical repositories and the NVIDIA CUDA repositories. + +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_branch` | `450` | Driver branch to use for the install | +| `nvidia_driver_ubuntu_packages` | `["nvidia-headless-450-server", "nvidia-headless-450-utils"]` | Package names to install from Canonical 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_repo_gpgkey_url` | `"https://developer.download.nvidia.com/compute/cuda/repos/{{ _ubuntu_repo_dir }}/7fa2af80.pub"` | GPG key for the CUDA repo | | `nvidia_driver_ubuntu_cuda_repo_gpgkey_id` | `"7fa2af80"` | GPG key ID for the CUDA repo | +| `nvidia_driver_ubuntu_cuda_package` | `"cuda-drivers"` | Package name to install from CUDA repo | ## Example playbook @@ -64,6 +71,8 @@ $ ansible-galaxy install nvidia.nvidia_driver Currently, this role supports the following Linux distributions: * NVIDIA DGX OS 4 +* NVIDIA DGX OS 5 * Ubuntu 18.04 LTS +* Ubuntu 20.04 LTS * CentOS 7 * Red Hat Enterprise Linux 7 diff --git a/defaults/main.yml b/defaults/main.yml index 7c27ba1..e049dd8 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -5,11 +5,29 @@ nvidia_driver_skip_reboot: no nvidia_driver_module_file: /etc/modprobe.d/nvidia.conf nvidia_driver_module_params: '' -# RedHat family + +############################################################################## +# RedHat family # +############################################################################## nvidia_driver_rhel_cuda_repo_baseurl: "https://developer.download.nvidia.com/compute/cuda/repos/{{ _rhel_repo_dir }}/" nvidia_driver_rhel_cuda_repo_gpgkey: "https://developer.download.nvidia.com/compute/cuda/repos/{{ _rhel_repo_dir }}/7fa2af80.pub" -# Ubuntu + +############################################################################## +# Ubuntu # +############################################################################## + +# Determine if we should install from CUDA repo instead of Canonical repos +nvidia_driver_ubuntu_install_from_cuda_repo: no + +# Installing with Canonical repositories +nvidia_driver_ubuntu_branch: "450" +nvidia_driver_ubuntu_packages: +- "nvidia-headless-{{ nvidia_driver_ubuntu_branch }}-server" +- "nvidia-utils-{{ nvidia_driver_ubuntu_branch }}-server" + +# Installing with CUDA repositories nvidia_driver_ubuntu_cuda_repo_gpgkey_url: "https://developer.download.nvidia.com/compute/cuda/repos/{{ _ubuntu_repo_dir }}/7fa2af80.pub" nvidia_driver_ubuntu_cuda_repo_gpgkey_id: "7fa2af80" nvidia_driver_ubuntu_cuda_repo_baseurl: "http://developer.download.nvidia.com/compute/cuda/repos/{{ _ubuntu_repo_dir }}" +nvidia_driver_ubuntu_cuda_package: "cuda-drivers" diff --git a/meta/main.yml b/meta/main.yml index 3a9017a..da7c9f0 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -11,6 +11,7 @@ galaxy_info: versions: - 'xenial' - 'bionic' + - 'focal' - name: EL versions: - '7' diff --git a/tasks/install-ubuntu-cuda-repo.yml b/tasks/install-ubuntu-cuda-repo.yml new file mode 100644 index 0000000..7aab994 --- /dev/null +++ b/tasks/install-ubuntu-cuda-repo.yml @@ -0,0 +1,35 @@ +--- +- name: remove ppa + apt_repository: + repo: ppa:graphics-drivers/ppa + state: absent + +- name: add pin file + copy: + src: "cuda-ubuntu.pin" + dest: "/etc/apt/preferences.d/cuda-repository-pin-600" + owner: "root" + group: "root" + mode: "0644" + +- name: add key + apt_key: + url: "{{ nvidia_driver_ubuntu_cuda_repo_gpgkey_url }}" + id: "{{ nvidia_driver_ubuntu_cuda_repo_gpgkey_id }}" + environment: "{{proxy_env if proxy_env is defined else {}}}" + + +- name: add repo + apt_repository: + repo: "deb {{ nvidia_driver_ubuntu_cuda_repo_baseurl }} /" + update_cache: yes + environment: "{{proxy_env if proxy_env is defined else {}}}" + +- name: install driver packages + apt: + name: "{{ nvidia_driver_package_version | ternary(nvidia_driver_ubuntu_cuda_package+'='+nvidia_driver_package_version, nvidia_driver_ubuntu_cuda_package) }}" + state: "{{ nvidia_driver_package_state }}" + autoremove: "{{ nvidia_driver_package_state == 'absent' }}" + purge: "{{ nvidia_driver_package_state == 'absent' }}" + register: install_driver + environment: "{{proxy_env if proxy_env is defined else {}}}" diff --git a/tasks/install-ubuntu.yml b/tasks/install-ubuntu.yml index 7bc40b4..bcd0a39 100644 --- a/tasks/install-ubuntu.yml +++ b/tasks/install-ubuntu.yml @@ -4,32 +4,12 @@ repo: ppa:graphics-drivers/ppa state: absent -- name: add pin file - copy: - src: "cuda-ubuntu.pin" - dest: "/etc/apt/preferences.d/cuda-repository-pin-600" - owner: "root" - group: "root" - mode: "0644" - -- name: add key - apt_key: - url: "{{ nvidia_driver_ubuntu_cuda_repo_gpgkey_url }}" - id: "{{ nvidia_driver_ubuntu_cuda_repo_gpgkey_id }}" - environment: "{{proxy_env if proxy_env is defined else {}}}" - - -- name: add repo - apt_repository: - repo: "deb {{ nvidia_driver_ubuntu_cuda_repo_baseurl }} /" - update_cache: yes - environment: "{{proxy_env if proxy_env is defined else {}}}" - - name: install driver packages apt: - name: "{{ nvidia_driver_package_version | ternary('cuda-drivers='+nvidia_driver_package_version, 'cuda-drivers') }}" + name: "{{ nvidia_driver_package_version | ternary(item+'='+nvidia_driver_package_version, item) }}" state: "{{ nvidia_driver_package_state }}" autoremove: "{{ nvidia_driver_package_state == 'absent' }}" purge: "{{ nvidia_driver_package_state == 'absent' }}" + with_items: "{{ nvidia_driver_ubuntu_packages }}" register: install_driver environment: "{{proxy_env if proxy_env is defined else {}}}" diff --git a/tasks/main.yml b/tasks/main.yml index 9ab9c4f..d33f672 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -5,9 +5,13 @@ state: absent ignore_errors: true -- name: ubuntu install tasks +- name: ubuntu install tasks (canonical repos) include_tasks: install-ubuntu.yml - when: ansible_distribution == 'Ubuntu' + when: ansible_distribution == 'Ubuntu' and (not nvidia_driver_ubuntu_install_from_cuda_repo) + +- name: ubuntu install tasks (CUDA repo) + include_tasks: install-ubuntu-cuda-repo.yml + when: ansible_distribution == 'Ubuntu' and nvidia_driver_ubuntu_install_from_cuda_repo - name: redhat family install tasks include_tasks: install-redhat.yml