Add fedora support to sunshine role
This commit is contained in:
parent
32bef2d7f3
commit
8e3375b160
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