209 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
---
 | 
						|
# Install OpenCL drivers.
 | 
						|
 | 
						|
## Step 0/3: Dependencies ##
 | 
						|
- name: Miner | Driver | AMDGPU | Variables
 | 
						|
  set_fact:
 | 
						|
    amdgpu_cron_job: AMDGPU - Need To Finish Installation
 | 
						|
    amdgpu_cron_cmd: "{{ root_home.stdout }}/scm.sh"
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Install Dependencies
 | 
						|
  package:
 | 
						|
    name:
 | 
						|
      - dkms
 | 
						|
      - mesa-common-dev
 | 
						|
      - clinfo
 | 
						|
    state: present
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Set GRUB Timer
 | 
						|
  lineinfile:
 | 
						|
    path: /etc/default/grub
 | 
						|
    regexp: '^GRUB_TIMEOUT='
 | 
						|
    line: 'GRUB_TIMEOUT=3'
 | 
						|
    state: present
 | 
						|
    backup: yes
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Remove Previous Run's Cron Job
 | 
						|
  cron:
 | 
						|
    user: root
 | 
						|
    name: "{{ amdgpu_cron_job }}"
 | 
						|
    state: absent
 | 
						|
 | 
						|
# Tests
 | 
						|
- name: Miner | Driver | AMDGPU | Check If GA Kernel Installed
 | 
						|
  shell: 'uname --kernel-release | grep 5.4.0-65-generic'
 | 
						|
  register: ga_kernel
 | 
						|
  ignore_errors: yes
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Check If HWE Kernel Installed
 | 
						|
  shell: 'apt search linux-image-5.8.0-* | grep -c installed'
 | 
						|
  register: hwe_kernel
 | 
						|
  ignore_errors: yes
 | 
						|
 | 
						|
#- name: Miner | Driver | AMDGPU | Check If All Driver Installed
 | 
						|
#  shell: 'which amdgpu-uninstall'
 | 
						|
#  register: amdgpu_install
 | 
						|
#  ignore_errors: yes
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Check If Pro Driver Installed
 | 
						|
  shell: 'amdgpu-pro-uninstall -y'
 | 
						|
  register: amdgpu_install
 | 
						|
  ignore_errors: yes
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | DEBUG
 | 
						|
  debug:
 | 
						|
    var: "{{ item }}"
 | 
						|
  loop:
 | 
						|
    - ga_kernel
 | 
						|
    - hwe_kernel
 | 
						|
    - amdgpu_install
 | 
						|
 | 
						|
 | 
						|
 | 
						|
## Step 1/3: Get Correct Kernel ##
 | 
						|
- name: Miner | Driver | AMDGPU | Install Recommended GA Kernel
 | 
						|
  shell: apt install --install-recommends linux-generic
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Install Specific GA Kernel For Booting
 | 
						|
  package:
 | 
						|
    name:
 | 
						|
      - linux-headers-5.4.0-65
 | 
						|
      - linux-headers-5.4.0-65-generic
 | 
						|
      - linux-headers-generic
 | 
						|
      - linux-image-generic
 | 
						|
      - linux-modules-extra-5.4.0-65-generic
 | 
						|
    state: present
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Prepare GRUB To Boot GA Kernel
 | 
						|
  lineinfile:
 | 
						|
    path: /etc/default/grub
 | 
						|
    regexp: '^GRUB_DEFAULT='
 | 
						|
    line: 'GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.4.0-65-generic"'
 | 
						|
    state: present
 | 
						|
    backup: yes
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Update GRUB
 | 
						|
  shell: update-grub
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Prepare Cron Job To SCM
 | 
						|
  cron:
 | 
						|
    user: root
 | 
						|
    name: "{{ amdgpu_cron_job }}"
 | 
						|
    special_time: reboot
 | 
						|
    job: "{{ amdgpu_cron_cmd }}"
 | 
						|
    state: present
 | 
						|
    disabled: no
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Reboot To GA Kernel
 | 
						|
  shell: reboot
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
 | 
						|
 | 
						|
- pause:
 | 
						|
    prompt: "Rebooting to GA kernel! Please hold."
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed
 | 
						|
 | 
						|
 | 
						|
 | 
						|
## Step 2/3: Remove Incorrect Kernels ##
 | 
						|
- name: Miner | Driver | AMDGPU | Remove Bad Kernels
 | 
						|
  shell: "apt remove --purge linux-generic-hwe-20.04 \
 | 
						|
                             linux-oem-20.04 \
 | 
						|
                             linux-hwe-* \
 | 
						|
                             linux-oem-* \
 | 
						|
                             linux-modules-5.1* \
 | 
						|
                             linux-modules-5.8.0-* \
 | 
						|
                             linux-modules-5.6.0-*"
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0"
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Update + Clean System
 | 
						|
  shell: "apt update; apt dist-upgrade -y; apt autoremove --purge -y"
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0"
 | 
						|
 | 
						|
# This is to ensure we can test adding `apt install --install-recommends linux-generic` later
 | 
						|
- name: Miner | Driver | AMDGPU | Boot Default Kernel
 | 
						|
  lineinfile:
 | 
						|
    path: /etc/default/grub
 | 
						|
    regexp: '^GRUB_DEFAULT='
 | 
						|
    line: 'GRUB_DEFAULT=0'
 | 
						|
    state: present
 | 
						|
    backup: yes
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0"
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Update GRUB
 | 
						|
  shell: update-grub
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0"
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Prepare Cron Job To SCM
 | 
						|
  cron:
 | 
						|
    user: root
 | 
						|
    name: "{{ amdgpu_cron_job }}"
 | 
						|
    special_time: reboot
 | 
						|
    job: "{{ amdgpu_cron_cmd }}"
 | 
						|
    state: present
 | 
						|
    disabled: no
 | 
						|
  when: amdgpu_install.failed and hwe_kernel.stdout != "0"
 | 
						|
 | 
						|
# This reboot may not be necessary.
 | 
						|
#- name: Miner | Driver | AMDGPU | Reboot To Ensure GA Is 0
 | 
						|
#  shell: reboot
 | 
						|
#  when: amdgpu_install.failed and hwe_kernel.stdout != "0"
 | 
						|
#
 | 
						|
#- pause:
 | 
						|
#    prompt: "Rebooting to clear kernels! Please hold."
 | 
						|
#  when: amdgpu_install.failed and hwe_kernel.stdout != "0"
 | 
						|
 | 
						|
 | 
						|
 | 
						|
## Step 3/3: Install AMD PRO Driver ##
 | 
						|
- name: Miner | Driver | AMDGPU | Download Driver
 | 
						|
  shell: 'scp {{ user }}@leet:InstallFiles/Drivers/amdgpu-pro-20.45-1188099-ubuntu-20.04.tar.xz {{ root_home.stdout }}/Downloads/'
 | 
						|
  when: amdgpu_install.failed or "1" == "1"
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Extract Tarball
 | 
						|
  shell: 'cd {{ root_home.stdout }}/Downloads; tar -xvf amdgpu-pro-20.45-1188099-ubuntu-20.04.tar.xz'
 | 
						|
  when: amdgpu_install.failed or "1" == "1"
 | 
						|
 | 
						|
## Only one driver set can exist at a time! ##
 | 
						|
#- name: Miner | Driver | AMDGPU | Install AMDGPU All Driver
 | 
						|
#  shell: 'cd {{ root_home.stdout }}/Downloads/amdgpu-pro-20.45-1188099-ubuntu-20.04; ./amdgpu-install -y'
 | 
						|
#  when: amdgpu_install.failed
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Install AMDGPU-Pro Driver
 | 
						|
  shell: 'cd {{ root_home.stdout }}/Downloads/amdgpu-pro-20.45-1188099-ubuntu-20.04; ./amdgpu-pro-install -y --opencl=pal,legacy'
 | 
						|
  when: amdgpu_install.failed or "1" == "1"
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Prepare Cron Job To SCM
 | 
						|
  cron:
 | 
						|
    user: root
 | 
						|
    name: "{{ amdgpu_cron_job }}"
 | 
						|
    special_time: reboot
 | 
						|
    job: "{{ amdgpu_cron_cmd }}"
 | 
						|
    state: present
 | 
						|
    disabled: no
 | 
						|
  when: amdgpu_install.failed
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Reboot To GA Kernel
 | 
						|
  shell: reboot
 | 
						|
  when: amdgpu_install.failed
 | 
						|
 | 
						|
- pause:
 | 
						|
    prompt: "Rebooting to use driver! Please hold."
 | 
						|
  when: amdgpu_install.failed
 | 
						|
 | 
						|
 | 
						|
 | 
						|
## We're done! ##
 | 
						|
- name: Miner | Driver | AMDGPU | Test Driver
 | 
						|
  shell: clinfo -l
 | 
						|
  register: clinfo
 | 
						|
 | 
						|
- name: Miner | Driver | AMDGPU | Test Results
 | 
						|
  debug:
 | 
						|
    var: clinfo
 | 
						|
  ignore_errors: yes
 |