Add fedora support to sunshine role
This commit is contained in:
		
							parent
							
								
									32bef2d7f3
								
							
						
					
					
						commit
						8e3375b160
					
				roles/sunshine/tasks
							
								
								
									
										43
									
								
								roles/sunshine/tasks/Debian.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
								
							
						
						
									
										43
									
								
								roles/sunshine/tasks/Debian.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					# FIXME: This will only work for Debian or Ubuntu but not Ubuntu derived distros
 | 
				
			||||||
 | 
					- set_fact:
 | 
				
			||||||
 | 
					    assets: '{{latest.json.assets}}'
 | 
				
			||||||
 | 
					    asset_name: 'sunshine-{{ ansible_distribution | lower }}-{{ ansible_distribution_version }}-amd64.deb'
 | 
				
			||||||
 | 
					- set_fact:
 | 
				
			||||||
 | 
					    asset_query: '[?contains(name, `{{asset_name}}`)] | [0]'
 | 
				
			||||||
 | 
					- set_fact:
 | 
				
			||||||
 | 
					    asset: '{{assets | json_query(asset_query)}}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: download deb file
 | 
				
			||||||
 | 
					  get_url:
 | 
				
			||||||
 | 
					    url: '{{asset.browser_download_url}}'
 | 
				
			||||||
 | 
					    dest: '/tmp/{{asset_name}}'
 | 
				
			||||||
 | 
					  environment: '{{proxy_environment}}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: install package from deb file
 | 
				
			||||||
 | 
					  become: true
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    deb: '/tmp/{{asset_name}}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: remove deb file
 | 
				
			||||||
 | 
					  file:
 | 
				
			||||||
 | 
					    state: absent
 | 
				
			||||||
 | 
					    path: '/tmp/{{asset_name}}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: fix systemd unit
 | 
				
			||||||
 | 
					  become: true
 | 
				
			||||||
 | 
					  copy:
 | 
				
			||||||
 | 
					    path: /usr/lib/systemd/user/sunshine.service
 | 
				
			||||||
 | 
					    content: |
 | 
				
			||||||
 | 
					      [Unit]
 | 
				
			||||||
 | 
					      Description=Sunshine is a self-hosted game stream host for Moonlight.
 | 
				
			||||||
 | 
					      StartLimitIntervalSec=500
 | 
				
			||||||
 | 
					      StartLimitBurst=5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      [Service]
 | 
				
			||||||
 | 
					      ExecStart=/usr/bin/sunshine
 | 
				
			||||||
 | 
					      Restart=on-failure
 | 
				
			||||||
 | 
					      RestartSec=5s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      [Install]
 | 
				
			||||||
 | 
					      WantedBy=xdg-desktop-autostart.target
 | 
				
			||||||
							
								
								
									
										56
									
								
								roles/sunshine/tasks/RedHat.yaml
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
								
							
						
						
									
										56
									
								
								roles/sunshine/tasks/RedHat.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					- assert:
 | 
				
			||||||
 | 
					    that:
 | 
				
			||||||
 | 
					      - ansible_distribution == "Fedora"
 | 
				
			||||||
 | 
					      - assets is defined
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- set_fact:
 | 
				
			||||||
 | 
					    asset_name: 'sunshine-{{ ansible_distribution | lower }}-{{ ansible_distribution_version }}-amd64.rpm'
 | 
				
			||||||
 | 
					- set_fact:
 | 
				
			||||||
 | 
					    asset_query: '[?contains(name, `{{asset_name}}`)] | [0]'
 | 
				
			||||||
 | 
					- set_fact:
 | 
				
			||||||
 | 
					    asset: '{{assets | json_query(asset_query)}}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: download rpm file
 | 
				
			||||||
 | 
					  get_url:
 | 
				
			||||||
 | 
					    url: '{{asset.browser_download_url}}'
 | 
				
			||||||
 | 
					    dest: '/tmp/{{asset_name}}'
 | 
				
			||||||
 | 
					  environment: '{{proxy_environment}}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: install package from rpm file
 | 
				
			||||||
 | 
					  dnf:
 | 
				
			||||||
 | 
					    name: '/tmp/{{asset_name}}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: remove rpm file
 | 
				
			||||||
 | 
					  file:
 | 
				
			||||||
 | 
					    state: absent
 | 
				
			||||||
 | 
					    path: '/tmp/{{asset_name}}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: create udev rules for uinput
 | 
				
			||||||
 | 
					  become: true
 | 
				
			||||||
 | 
					  copy:
 | 
				
			||||||
 | 
					    content: |
 | 
				
			||||||
 | 
					      KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess"
 | 
				
			||||||
 | 
					    dest: /etc/udev/rules.d/60-sunshine.rules
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: reload udev rules for uinput
 | 
				
			||||||
 | 
					  become: true
 | 
				
			||||||
 | 
					  command: udevadm control --reload-rules
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: request udev events
 | 
				
			||||||
 | 
					  become: true
 | 
				
			||||||
 | 
					  command: udevadm trigger
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: add uinput module
 | 
				
			||||||
 | 
					  become: true
 | 
				
			||||||
 | 
					  modprobe:
 | 
				
			||||||
 | 
					    name: uinput
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: stat sunshine
 | 
				
			||||||
 | 
					  stat:
 | 
				
			||||||
 | 
					    path: /usr/bin/sunshine
 | 
				
			||||||
 | 
					  register: sunshine
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: enable permissions for KMS capture
 | 
				
			||||||
 | 
					  become: true
 | 
				
			||||||
 | 
					  command: 'setcap cap_sys_admin+p {{ sunshine.stat.lnk_source }}'
 | 
				
			||||||
@ -1,8 +1,4 @@
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
- set_fact:
 | 
					 | 
				
			||||||
    # TODO: Construct this out of information in ansible_facts
 | 
					 | 
				
			||||||
    asset_name: sunshine-ubuntu-22.04-amd64.deb
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- name: get latest version
 | 
					- name: get latest version
 | 
				
			||||||
  uri:
 | 
					  uri:
 | 
				
			||||||
    url: https://api.github.com/repos/LizardByte/Sunshine/releases/latest
 | 
					    url: https://api.github.com/repos/LizardByte/Sunshine/releases/latest
 | 
				
			||||||
@ -11,42 +7,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- set_fact:
 | 
					- set_fact:
 | 
				
			||||||
    assets: '{{latest.json.assets}}'
 | 
					    assets: '{{latest.json.assets}}'
 | 
				
			||||||
    asset_query: '[?contains(name, `{{asset_name}}`)] | [0]'
 | 
					 | 
				
			||||||
- debug: var=assets
 | 
					 | 
				
			||||||
- debug: var=asset_query
 | 
					 | 
				
			||||||
- set_fact:
 | 
					 | 
				
			||||||
    asset: '{{assets | json_query(asset_query)}}'
 | 
					 | 
				
			||||||
- debug: var=asset
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: download deb file
 | 
					- include_tasks: '{{ansible_os_family}}.yaml'
 | 
				
			||||||
  get_url:
 | 
					 | 
				
			||||||
    url: '{{asset.browser_download_url}}'
 | 
					 | 
				
			||||||
    dest: '/tmp/{{asset_name}}'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: install package from deb file
 | 
					- name: enable systemd service
 | 
				
			||||||
  become: true
 | 
					  ansible.builtin.systemd_service:
 | 
				
			||||||
  apt:
 | 
					    name: sunshine
 | 
				
			||||||
    deb: '/tmp/{{asset_name}}'
 | 
					    scope: user
 | 
				
			||||||
 | 
					    enabled: true
 | 
				
			||||||
- name: remove deb file
 | 
					    state: started
 | 
				
			||||||
  file:
 | 
					 | 
				
			||||||
    state: absent
 | 
					 | 
				
			||||||
    path: '/tmp/{{asset_name}}'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- name: fix systemd unit
 | 
					 | 
				
			||||||
  become: true
 | 
					 | 
				
			||||||
  copy:
 | 
					 | 
				
			||||||
    path: /usr/lib/systemd/user/sunshine.service
 | 
					 | 
				
			||||||
    content: |
 | 
					 | 
				
			||||||
      [Unit]
 | 
					 | 
				
			||||||
      Description=Sunshine is a self-hosted game stream host for Moonlight.
 | 
					 | 
				
			||||||
      StartLimitIntervalSec=500
 | 
					 | 
				
			||||||
      StartLimitBurst=5
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
      [Service]
 | 
					 | 
				
			||||||
      ExecStart=/usr/bin/sunshine
 | 
					 | 
				
			||||||
      Restart=on-failure
 | 
					 | 
				
			||||||
      RestartSec=5s
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
      [Install]
 | 
					 | 
				
			||||||
      WantedBy=xdg-desktop-autostart.target
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user