Skip to content
Snippets Groups Projects
main.yml 4.13 KiB
Newer Older
Jupiter Hu's avatar
Jupiter Hu committed
---
- name: install deps 
  yum: name={{ item }} state=installed
  sudo: true
  with_items:
    - gcc
    - perl
    - wget
    - pciutils
    - kernel-headers
    - kernel-devel 
    - xterm
    - libX11-common
    - libX11-devel
    - libX11
    - xorg-x11-server-common
    - xorg-x11-util-macros
    - xorg-x11-server-utils
    - xorg-x11-font-utils
    - xorg-x11-server-Xorg
    - xorg-x11-glamor
    - xorg-x11-xinit
    - xorg-x11-utils
    - xorg-x11-xauth
    - xorg-x11-proto-devel
    - xorg-x11-xkb-utils

Chris Hines's avatar
Chris Hines committed
- name: install development tools
  yum: name="@Development Tools" state=installed
  become: true
  become_user: root
Jupiter Hu's avatar
Jupiter Hu committed

Chris Hines's avatar
Chris Hines committed
- name: disable nouveau
  template: src=blacklist-nouveau.conf.j2 dest=/etc/modprobe.d/blacklist-nouveau.conf
  become: true
  become_user: root
Jupiter Hu's avatar
Jupiter Hu committed

- name: template unit for for persistenced
  template: src=nvidia-persistenced.service dest=/etc/systemd/system/nvidia-persistenced.service
  become: true
  become_user: root

- name: create the nvidia-persistenced user
  user: name=nvidia-persistenced state=present system=yes shell=/bin/false
  become: true
  become_user: root


- name: remove nouveau
  modprobe: name=nouveau state=absent
  become: true 
  become_user: root

- name: get kernel version
  shell: uname -r
  register: kernel_version
Jupiter Hu's avatar
Jupiter Hu committed
- name: check nvidia driver
  stat: path="/lib/modules/{{ kernel_version.stdout }}/kernel/drivers/video/nvidia.ko"
  register: nvidia_driver
Jupiter Hu's avatar
Jupiter Hu committed
  ignore_errors: true

Chris Hines's avatar
Chris Hines committed
- name: set default driver version
  set_fact: 
    installed_driver_version: '0.0'

- name: check nvidia driver version
  shell: 'nvidia-smi | grep -Po "Driver Version: \K\S+"'
  register: installed_driver_version
  when: nvidia_driver.stat.exists
  check_mode: no

- name: set install default
  set_fact: 
    install_driver: false

- name: set uninstall default
  set_fact: 
Chris Hines's avatar
Chris Hines committed

- name: set install
  set_fact: 
    install_driver: true
  when: not nvidia_driver.stat.exists or not installed_driver_version.stdout == nvidia_version
Chris Hines's avatar
Chris Hines committed

- name: set uninstall
  set_fact: 
    uninstall_driver: true
  when: nvidia_driver.stat.exists and not installed_driver_version.stdout == nvidia_version
Chris Hines's avatar
Chris Hines committed

- name: stop the persistence daemon
  service: name=nvidia-persistenced state=stopped
  become: true
  become_user: root
  when: uninstall_driver

- name: kill any X processes
  shell:  ps ax | grep "X :0" | grep -v grep | cut -f 1 -d " " | xargs -I{} kill -9 {}
  become: true
  become_user: root
  when: uninstall_driver

Chris Hines's avatar
Chris Hines committed
- name: get nvidia driver 
  get_url: url=http://consistency0/src/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run dest=/tmp/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run
  become: true
  become_user: root
Chris Hines's avatar
Chris Hines committed
  when: install_driver
Jupiter Hu's avatar
Jupiter Hu committed

Chris Hines's avatar
Chris Hines committed
#- name: Copy boot file
#  template: src=grub.conf.j2 dest=/boot/grub/grub.conf 
#  sudo: true
#
#- name: Copy X config file
#  template: src=xorg.conf.j2 dest=/etc/X11/xorg.conf 
#  sudo: true
Jupiter Hu's avatar
Jupiter Hu committed

- name: Copy xserver file
  template: src=xserver.j2 dest=/etc/pam.d/xserver
  sudo: true
Jupiter Hu's avatar
Jupiter Hu committed
- name: build nvidia driver 
Chris Hines's avatar
Chris Hines committed
  shell: chmod 755 /tmp/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run; /tmp/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run --silent
Jupiter Hu's avatar
Jupiter Hu committed
  sudo: true
Chris Hines's avatar
Chris Hines committed
  when: install_driver
Jupiter Hu's avatar
Jupiter Hu committed

- name: set the GOM
  shell: nvidia-smi --gom=0
  become: true
  become_user: root

- name: enable persistenced on boot
  service: name=nvidia-persistenced state=started enabled=yes
  become: true
  become_user: root

- name: Configure xorg.conf with nvidia-xconfig so xorg.conf matches gpu number
  shell: /usr/bin/nvidia-xconfig -a --use-display-device=none --preserve-busid
  become: true
  become_user: root
  args: 
    creates: /etc/X11/xorg.conf
#- name: Template xorg.conf for nodes with one GPU
#  template: src=xorg.conf.j2 dest=/etc/X11/xorg.conf
#  become: true
#  become_user: root
#  when: template_xorgconf is defined and template_xorgcon

- name: run nvidia-xconf-gen
  script: scripts/nvidia-xconf-gen.py
  register: nvidiacards

- name: set env for nvidia_card_lists
  set_fact: 
    nvidiacardslist: "{{ nvidiacards.stdout | from_json }}"

- name: generate nvidia-xorg-conf
  sudo: true
  template:
    src: xorg.conf.j2
    dest: "{{ item['filename'] }}"
  with_items: "{{ nvidiacardslist }}"