本日も乙

ただの自己満足な備忘録。

ansible-role-nvidia-driverでコケていた問題を解決した

半年前の話なのですでに解消済なのですが備忘のために残しておきます。

ansible-role-nvidia-driverとは

NVIDIAドライバをインストールできるAnsibleのロールです。NVIDIAのGitHubリポジトリで管理されており、Ansible Galaxyでも公開されています。

Ansible Galaxy - nvidia_driver

自分でAnsible Playbookやロールを作ってインストールすることもできますが、公開されていて、かつメンテナンスされているものをつかった方が楽なので、できるだけ利用しています。

事象

以下のようなPlaybookがあるとします。

- name: Install NVIDIA Driver
  hosts: hogehoge

  roles:
    - role: nvidia.nvidia_driver
      tags: "nvidia"
      vars:
        - nvidia_driver_ubuntu_install_from_cuda_repo: yes
        - nvidia_driver_package_version: "465.19.01-1"
        - nvidia_driver_skip_reboot: yes

このPlaybookを実行すると以下のエラーがでました。

TASK [nvidia.nvidia_driver : add repo] ****************************************************************************************************
fatal: [foo-server]: FAILED! => changed=false 
  msg: 'Failed to update apt cache: E:Failed to fetch https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/by-hash/SHA256/751939d95516afc289908a19e447f0acc1506367f72ed356431a2b1a469cc8ca  404  Not Found [IP: 152.199.39.144 443], E:Some index files failed to download. They have been ignored, or old ones used instead.'

該当箇所は以下です。
https://github.com/NVIDIA/ansible-role-nvidia-driver/blob/v2.0.1/tasks/install-ubuntu-cuda-repo.yml#L22-L26

原因

ここの箇所でパッケージリポジトリのURLがhttpsではなく、httpになっていたのが原因でした。NVIDIAドライバのインストール画面にいくと、httpsになっていました。

手元でhttpでNVIDIAドライバを入れようとすると同じエラーになることが確認できました。

$ cat << EOF > /etc/apt/sources.list.d/developer_download_nvidia_com_compute_cuda_repos_ubuntu2004_x86_64.list
deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 /
EOF

$ apt-get update
Err:11 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64  Packages
  404  Not Found [IP: 152.199.39.144 443]
Fetched 329 kB in 1s (231 kB/s)
Reading package lists... Done
E: Failed to fetch https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/by-hash/SHA256/751939d95516afc289908a19e447f0acc1506367f72ed356431a2b1a469cc8ca  404  Not Found [IP: 152.199.39.144 443]
E: Some index files failed to download. They have been ignored, or old ones used instead.

解決策

2つあります。

1. v2.0.2に上げる

修正PRを上げてマージされているため、最新版のv2.0.2に上げれば解消されます。

github.com

2. nvidia_driver_ubuntu_cuda_repo_baseurl を指定する

諸事情によりバージョンを上げることができない場合は、nvidia_driver_ubuntu_cuda_repo_baseurlパラメータでリポジトリURLを変えることで回避できます。

- name: Install NVIDIA Driver
  hosts: hogehoge

  roles:
    - role: nvidia.nvidia_driver
      tags: "nvidia"
      vars:
        # 追加
        - nvidia_driver_ubuntu_cuda_repo_baseurl: "https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/"
        - nvidia_driver_ubuntu_install_from_cuda_repo: yes
        - nvidia_driver_package_version: "465.19.01-1"
        - nvidia_driver_skip_reboot: yes

参考URL