如何通过 SaltStack 以非交互方式安装 NVIDIA

How can I install NVIDIA in non-interactive by SaltStack

我是 SaltStack 的新手。

我需要在 minion 服务器上安装 NVIDIA 运行仅带有 SaltStack 的 CentOS 7。

在 gpu/init.sls 文件中:

install_nvidia:
  cmd.script:
    - source: salt://gpu/files/NVIDIA-Linux-x86_64-375.20.run
    - user: root
    - group: root
    - shell: /bin/bash
    - args: -a

我运行:

sudo salt minion_name state.apply gpu

我收到错误:

...
 stderr:
                  Error opening terminal: unknown.
...
...
Summary for minion_name
------------
Succeeded: 0 (changed=1)
Failed:    1

如何获得有关失败原因的更多详细信息? 我相信它会等待用户输入,但我不知道是什么

另外,如何在 CentOS 7 上以非交互方式安装 NVIDIA?

谢谢。

您可以通过在本地使用 salt-call -l debug 运行在 Salt 状态失败的原因获得更多详细信息。

salt-call -l debug state.apply gpu

在您的情况下,您必须知道在 Linux 上安装 NVIDIA 驱动程序将需要您 运行 安装程序没有图形会话。执行此操作的最简单方法是检查您当前是否处于图形会话中(使用 systemd),如果是,则删除 do multi-user.target:

enter-multiuser:
  cmd.run:
    - name: systemctl isolate multi-user.target
    - onlyif: systemctl status graphical.target

然后,您可以使用类似

的方式静默安装 NVIDIA 驱动程序
gpu-prerequisites:
  pkg.installed:
    - pkgs:
      - kernel-devel

download-installer:
  file.managed:
    - name: /tmp/NVIDIA-Linux-x86_64-375.20.run
    - source: salt://gpu/files/NVIDIA-Linux-x86_64-375.20.run


install-driver:
  cmd.run:
    - name: /tmp/NVIDIA-Linux-x86_64-375.20.run -a -s -Z -X
    - require:
      - file: download-installer
      - pkg: gpu-prequisites

start-graphical:
  cmd.run: 
    - name: systemctl start graphical.target
    - unless:  systemctl status graphical.target
    - watch:
      - cmd: install-driver