Compare commits

..

No commits in common. "4b9534a27ef2c7a096f58959d9762647f524b96d" and "66337f8771be048964d1845ef1ac67cfbe4a41db" have entirely different histories.

11 changed files with 60 additions and 218 deletions

1
.gitignore vendored
View File

@ -1,2 +1 @@
*.retry *.retry
.idea/

View File

@ -24,20 +24,20 @@ $ ansible-galaxy install nvidia.nvidia_driver
| Variable | Default value | Description | | Variable | Default value | Description |
|-------------------------------------|---------------------------------|-----------------------------------------------------------------------------------------------------------------------| | -------- | ------------- | ----------- |
| `nvidia_driver_package_state` | `"present"` | Package state for NVIDIA driver packages | | `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_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_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_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_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_module_params` | `""` | Parameters to pass to the NVIDIA driver |
| `nvidia_driver_branch` | `"515"` | Default driver branch to install | | `nvidia_driver_branch` | `"510"` | Default driver branch to install |
### Red Hat specific variables ### Red Hat specific variables
| Variable | Default value | Description | | 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 | | `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_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 | | `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 |
@ -49,11 +49,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. By default, the Canonical repositories will be used, and the driver installed will be the headless server driver.
| Variable | Default value | Description | | Variable | Default value | Description |
|-----------------------------------------------|------------------------------------------------------------------------------------|------------------------------------------------------| | -------- | ------------- | ----------- |
| `nvidia_driver_ubuntu_install_from_cuda_repo` | `no` | Flag whether to use the CUDA repo | | `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_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 | | `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 ## Example playbook

View File

@ -5,7 +5,7 @@ nvidia_driver_skip_reboot: no
nvidia_driver_module_file: /etc/modprobe.d/nvidia.conf nvidia_driver_module_file: /etc/modprobe.d/nvidia.conf
nvidia_driver_module_params: '' nvidia_driver_module_params: ''
nvidia_driver_add_repos: yes nvidia_driver_add_repos: yes
nvidia_driver_branch: "515" nvidia_driver_branch: "510"
############################################################################## ##############################################################################
@ -14,38 +14,11 @@ nvidia_driver_branch: "515"
epel_package: "https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm" epel_package: "https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ ansible_distribution_major_version }}.noarch.rpm"
epel_repo_key: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}" epel_repo_key: "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-{{ ansible_distribution_major_version }}"
nvidia_driver_rhel_cuda_repo_baseurl: "https://developer.download.nvidia.com/compute/cuda/repos/{{ _rhel_repo_dir }}/" 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 }}/D42D0685.pub" nvidia_driver_rhel_cuda_repo_gpgkey: "https://developer.download.nvidia.com/compute/cuda/repos/{{ _rhel_repo_dir }}/7fa2af80.pub"
nvidia_driver_rhel_branch: "{{ nvidia_driver_branch }}" nvidia_driver_rhel_branch: "{{ nvidia_driver_branch }}"
##############################################################################
# Debian
##############################################################################
# Driver branch to install with Debian
nvidia_driver_debian_branch: "{{ nvidia_driver_branch }}"
# Determine if we should install from CUDA repo instead of Canonical repos
nvidia_driver_debian_install_from_cuda_repo: no
# Installing with Debian repositories
nvidia_driver_debian_packages:
- "nvidia-driver"
- "nvidia-cuda-dev"
- "nvidia-cuda-toolkit"
nvidia_driver_debian_install_tesla_driver: no
nvidia_driver_debian_tesla_package: "nvidia-tesla-470-driver"
# Installing with CUDA repositories
old_nvidia_driver_debian_cuda_repo_gpgkey_id: "7fa2af80"
nvidia_driver_debian_cuda_repo_baseurl: "https://developer.download.nvidia.com/compute/cuda/repos/{{ _debian_repo_dir }}"
nvidia_driver_debian_cuda_keyring_package: "cuda-keyring_1.1-1_all.deb"
nvidia_driver_debian_cuda_keyring_url: "{{ nvidia_driver_debian_cuda_repo_baseurl }}/{{ nvidia_driver_debian_cuda_keyring_package }}"
nvidia_driver_debian_cuda_package: "cuda-drivers-{{ nvidia_driver_debian_branch }}"
############################################################################## ##############################################################################
# Ubuntu # # Ubuntu #
############################################################################## ##############################################################################
@ -56,18 +29,15 @@ nvidia_driver_ubuntu_branch: "{{ nvidia_driver_branch }}"
# Determine if we should install from CUDA repo instead of Canonical repos # Determine if we should install from CUDA repo instead of Canonical repos
nvidia_driver_ubuntu_install_from_cuda_repo: no nvidia_driver_ubuntu_install_from_cuda_repo: no
nvidia_driver_ubuntu_packages_suffix: "-server"
# Installing with Canonical repositories # Installing with Canonical repositories
nvidia_driver_ubuntu_packages: nvidia_driver_ubuntu_packages:
- "nvidia-headless-{{ nvidia_driver_ubuntu_branch }}{{ nvidia_driver_ubuntu_packages_suffix }}" - "nvidia-headless-{{ nvidia_driver_ubuntu_branch }}-server"
- "nvidia-utils-{{ nvidia_driver_ubuntu_branch }}{{ nvidia_driver_ubuntu_packages_suffix }}" - "nvidia-utils-{{ nvidia_driver_ubuntu_branch }}-server"
- "nvidia-headless-no-dkms-{{ nvidia_driver_ubuntu_branch }}{{ nvidia_driver_ubuntu_packages_suffix }}" - "nvidia-headless-no-dkms-{{ nvidia_driver_ubuntu_branch }}-server"
- "nvidia-kernel-source-{{ nvidia_driver_ubuntu_branch }}{{ nvidia_driver_ubuntu_packages_suffix }}" - "nvidia-kernel-source-{{ nvidia_driver_ubuntu_branch }}-server"
# Installing with CUDA repositories # Installing with CUDA repositories
old_nvidia_driver_ubuntu_cuda_repo_gpgkey_id: "7fa2af80" 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: "https://developer.download.nvidia.com/compute/cuda/repos/{{ _ubuntu_repo_dir }}" nvidia_driver_ubuntu_cuda_repo_baseurl: "https://developer.download.nvidia.com/compute/cuda/repos/{{ _ubuntu_repo_dir }}"
nvidia_driver_ubuntu_cuda_keyring_package: "cuda-keyring_1.0-1_all.deb"
nvidia_driver_ubuntu_cuda_keyring_url: "{{ nvidia_driver_ubuntu_cuda_repo_baseurl }}/{{ nvidia_driver_ubuntu_cuda_keyring_package }}"
nvidia_driver_ubuntu_cuda_package: "cuda-drivers-{{ nvidia_driver_ubuntu_branch }}" nvidia_driver_ubuntu_cuda_package: "cuda-drivers-{{ nvidia_driver_ubuntu_branch }}"

3
files/cuda-ubuntu.pin Normal file
View File

@ -0,0 +1,3 @@
Package: *
Pin: release l=NVIDIA CUDA
Pin-Priority: 600

View File

@ -27,7 +27,7 @@ platforms:
- cuda_repo - cuda_repo
- ubuntu - ubuntu
- name: ubuntu-2004-canonical-server - name: ubuntu-2004-canonical
image: geerlingguy/docker-ubuntu2004-ansible image: geerlingguy/docker-ubuntu2004-ansible
volumes: volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro - /sys/fs/cgroup:/sys/fs/cgroup:ro
@ -38,18 +38,6 @@ platforms:
- canonical_repo - canonical_repo
- ubuntu - 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 - name: ubuntu-2004-cuda
image: geerlingguy/docker-ubuntu2004-ansible image: geerlingguy/docker-ubuntu2004-ansible
volumes: volumes:
@ -61,28 +49,6 @@ platforms:
- cuda_repo - cuda_repo
- ubuntu - ubuntu
- name: ubuntu-2204-canonical
image: geerlingguy/docker-ubuntu2204-ansible
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
command: /sbin/init
pre_build_image: true
privileged: true
groups:
- canonical_repo
- ubuntu
- name: ubuntu-2204-cuda
image: geerlingguy/docker-ubuntu2204-ansible
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:ro
command: /sbin/init
pre_build_image: true
privileged: true
groups:
- cuda_repo
- ubuntu
- name: centos-7 - name: centos-7
image: geerlingguy/docker-centos7-ansible image: geerlingguy/docker-centos7-ansible
volumes: volumes:
@ -91,13 +57,13 @@ platforms:
pre_build_image: true pre_build_image: true
privileged: true privileged: true
# - name: centos-8 - name: centos-8
# image: geerlingguy/docker-centos8-ansible image: geerlingguy/docker-centos8-ansible
# volumes: volumes:
# - /sys/fs/cgroup:/sys/fs/cgroup:ro - /sys/fs/cgroup:/sys/fs/cgroup:ro
# command: /sbin/init command: /sbin/init
# pre_build_image: true pre_build_image: true
# privileged: true privileged: true
provisioner: provisioner:
name: ansible name: ansible
@ -109,8 +75,6 @@ provisioner:
nvidia_driver_skip_reboot: true nvidia_driver_skip_reboot: true
canonical_repo: canonical_repo:
nvidia_driver_ubuntu_install_from_cuda_repo: false nvidia_driver_ubuntu_install_from_cuda_repo: false
canonical_repo_noserver:
nvidia_driver_ubuntu_packages_suffix: ""
cuda_repo: cuda_repo:
nvidia_driver_ubuntu_install_from_cuda_repo: true nvidia_driver_ubuntu_install_from_cuda_repo: true
verifier: verifier:

View File

@ -1,50 +0,0 @@
- name: add contrib & non-free repository
replace:
dest: /etc/apt/sources.list
regexp: '^(deb(?!.* contrib).*)'
replace: '\1 contrib non-free'
- name: remove old signing key
apt_key:
id: "{{ old_nvidia_driver_debian_cuda_repo_gpgkey_id }}"
state: absent
environment: "{{proxy_env if proxy_env is defined else {}}}"
when: nvidia_driver_add_repos | bool
- name: add CUDA keyring
apt:
deb: "{{ nvidia_driver_debian_cuda_keyring_url }}"
state: "present"
environment: "{{proxy_env if proxy_env is defined else {}}}"
when: nvidia_driver_add_repos | bool
- name: force an apt update
apt:
update_cache: true
changed_when: false
- name: ensure kmod is installed
apt:
name: "kmod"
state: "present"
- name: blacklist nouveau
kernel_blacklist:
name: nouveau
state: present
- name: install Linux headers and non-free firmware
apt:
name:
- linux-headers-{{ ansible_kernel }}
- firmware-misc-nonfree
state: present
- name: install driver packages
apt:
name: "{{ nvidia_driver_package_version | ternary(nvidia_driver_debian_cuda_package+'='+nvidia_driver_package_version, nvidia_driver_debian_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 {}}}"

View File

@ -1,35 +0,0 @@
---
- name: add contrib & non-free repository
replace:
dest: /etc/apt/sources.list
regexp: '^(deb(?!.* contrib).*)'
replace: '\1 contrib non-free'
- name: update apt
become: yes
apt:
update_cache: yes
- name: install Linux headers and non-free firmware
apt:
name:
- linux-headers-{{ ansible_kernel }}
- firmware-misc-nonfree
state: present
- name: install driver packages
apt:
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' }}"
loop: "{{ nvidia_driver_debian_packages }}"
register: install_driver
environment: "{{proxy_env if proxy_env is defined else {}}}"
- name: install tesla drivers
apt:
state: present
name: "{{ nvidia_driver_debian_tesla_package }}"
register: install_driver
when: nvidia_driver_debian_install_tesla_driver == true

View File

@ -4,35 +4,34 @@
repo: ppa:graphics-drivers/ppa repo: ppa:graphics-drivers/ppa
state: absent state: absent
- name: remove old signing key - name: add pin file
copy:
src: "cuda-ubuntu.pin"
dest: "/etc/apt/preferences.d/cuda-repository-pin-600"
owner: "root"
group: "root"
mode: "0644"
when: nvidia_driver_add_repos | bool
- name: add key
apt_key: apt_key:
id: "{{ old_nvidia_driver_ubuntu_cuda_repo_gpgkey_id }}" url: "{{ nvidia_driver_ubuntu_cuda_repo_gpgkey_url }}"
state: absent id: "{{ nvidia_driver_ubuntu_cuda_repo_gpgkey_id }}"
environment: "{{proxy_env if proxy_env is defined else {}}}" environment: "{{proxy_env if proxy_env is defined else {}}}"
when: nvidia_driver_add_repos | bool when: nvidia_driver_add_repos | bool
- name: add CUDA keyring
apt:
deb: "{{ nvidia_driver_ubuntu_cuda_keyring_url }}"
state: "present"
environment: "{{proxy_env if proxy_env is defined else {}}}"
when: nvidia_driver_add_repos | bool
- name: force an apt update
apt:
update_cache: true
changed_when: false
- name: ensure kmod is installed
apt:
name: "kmod"
state: "present"
- name: blacklist nouveau - name: blacklist nouveau
kernel_blacklist: kernel_blacklist:
name: nouveau name: nouveau
state: present state: present
- 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 {}}}"
when: nvidia_driver_add_repos | bool
- name: install driver packages - name: install driver packages
apt: apt:
name: "{{ nvidia_driver_package_version | ternary(nvidia_driver_ubuntu_cuda_package+'='+nvidia_driver_package_version, nvidia_driver_ubuntu_cuda_package) }}" name: "{{ nvidia_driver_package_version | ternary(nvidia_driver_ubuntu_cuda_package+'='+nvidia_driver_package_version, nvidia_driver_ubuntu_cuda_package) }}"

View File

@ -10,6 +10,6 @@
state: "{{ nvidia_driver_package_state }}" state: "{{ nvidia_driver_package_state }}"
autoremove: "{{ nvidia_driver_package_state == 'absent' }}" autoremove: "{{ nvidia_driver_package_state == 'absent' }}"
purge: "{{ nvidia_driver_package_state == 'absent' }}" purge: "{{ nvidia_driver_package_state == 'absent' }}"
loop: "{{ nvidia_driver_ubuntu_packages }}" with_items: "{{ nvidia_driver_ubuntu_packages }}"
register: install_driver register: install_driver
environment: "{{proxy_env if proxy_env is defined else {}}}" environment: "{{proxy_env if proxy_env is defined else {}}}"

View File

@ -5,14 +5,6 @@
state: absent state: absent
ignore_errors: true ignore_errors: true
- name: debian install tasks (debian repos)
include_tasks: install-debian.yml
when: ansible_distribution == "Debian" and (not nvidia_driver_debian_install_from_cuda_repo)
- name: debian install tasks (CUDA repos)
include_tasks: install-debian.yml
when: ansible_distribution == "Debian" and nvidia_driver_debian_install_from_cuda_repo
- name: ubuntu install tasks (canonical repos) - name: ubuntu install tasks (canonical repos)
include_tasks: install-ubuntu.yml include_tasks: install-ubuntu.yml
when: ansible_distribution == 'Ubuntu' and (not nvidia_driver_ubuntu_install_from_cuda_repo) when: ansible_distribution == 'Ubuntu' and (not nvidia_driver_ubuntu_install_from_cuda_repo)

View File

@ -1,3 +1,2 @@
_debian_repo_dir: "{{ ansible_distribution | lower }}{{ ansible_distribution_version | replace('.', '') }}/{{ ansible_architecture }}"
_ubuntu_repo_dir: "{{ ansible_distribution | lower }}{{ ansible_distribution_version | replace('.', '') }}/{{ ansible_architecture }}" _ubuntu_repo_dir: "{{ ansible_distribution | lower }}{{ ansible_distribution_version | replace('.', '') }}/{{ ansible_architecture }}"
_rhel_repo_dir: "rhel{{ ansible_distribution_major_version }}/{{ ansible_architecture }}" _rhel_repo_dir: "rhel{{ ansible_distribution_major_version }}/{{ ansible_architecture }}"