feat: tilføj Ansible-playbook til Fedora KDE setup

- Opret site.yml som hovedindgang til playbooken
- Opdel tasks i separate filer: rpmfusion, repos, dnf, flatpak, system
- Pakkelister i vars/ for nem redigering uden at røre logikken
- Auto-detektér Fedora-version og Intel CPU via Ansible facts
- Tilføj README med kørselsvejledning og manuelle trin
This commit is contained in:
2026-05-22 18:13:05 +02:00
parent a147ff681e
commit 7d1de3ad8e
9 changed files with 266 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
# Fedora KDE — Ansible Setup
Ansible-playbook der automatiserer installationsguiden i [installation.md](../installation.md).
## Struktur
```
ansible/
├── site.yml ← Kør denne
├── vars/
│ ├── dnf_packages.yml ← Liste over DNF-pakker
│ └── flatpak_packages.yml ← Liste over Flatpak-pakker
└── tasks/
├── rpmfusion.yml ← RPM Fusion repos, multimedia, DVD, firmware
├── repos.yml ← GPG-nøgler og .repo-filer
├── dnf_packages.yml ← Installer DNF-pakker fra vars/
├── flatpak_packages.yml ← Installer Flatpaks fra vars/
└── system.yml ← NetworkManager/systemd-resolved fix
```
## Forudsætninger
Installer Ansible og `community.general`-samlingen (kræves til Flatpak-modulet):
```bash
sudo dnf install ansible
ansible-galaxy collection install community.general
```
## Kør
```bash
ansible-playbook -K site.yml
```
`-K` prompter for sudo-password. Playbooken kører kun på `localhost`.
## Tilføj eller fjern pakker
- **DNF-pakke:** tilføj/fjern en linje i [vars/dnf_packages.yml](vars/dnf_packages.yml)
- **Flatpak:** tilføj/fjern en linje i [vars/flatpak_packages.yml](vars/flatpak_packages.yml)
- **Repo:** tilføj en task-blok i [tasks/repos.yml](tasks/repos.yml)
## Spring et modul over
Kommenter den relevante linje ud i `site.yml`:
```yaml
tasks:
- import_tasks: tasks/rpmfusion.yml
# - import_tasks: tasks/repos.yml ← springes over
- import_tasks: tasks/dnf_packages.yml
- import_tasks: tasks/flatpak_packages.yml
- import_tasks: tasks/system.yml
```
## Manuelle trin
Disse kan ikke automatiseres og skal gøres manuelt efter kørsel:
1. **Jottacloud login:** `run_jottad && jotta-cli login`
2. **Firefox about:config** — se [installation.md](../installation.md#firefox-aboutconfig)
3. **KDE Shortcuts** — System Settings → Shortcuts → Import → `kde_shortcuts/1password_shortcuts.kksrc`
+15
View File
@@ -0,0 +1,15 @@
---
- name: Fedora KDE Setup
hosts: localhost
connection: local
become: true
gather_facts: true
vars_files:
- vars/dnf_packages.yml
- vars/flatpak_packages.yml
tasks:
- import_tasks: tasks/rpmfusion.yml
- import_tasks: tasks/repos.yml
- import_tasks: tasks/dnf_packages.yml
- import_tasks: tasks/flatpak_packages.yml
- import_tasks: tasks/system.yml
@@ -0,0 +1,5 @@
---
- name: DNF - Installer pakker
ansible.builtin.dnf:
name: "{{ dnf_packages }}"
state: present
@@ -0,0 +1,6 @@
---
- name: Flatpak - Installer pakker
community.general.flatpak:
name: "{{ flatpak_packages }}"
method: system
state: present
+75
View File
@@ -0,0 +1,75 @@
---
# 1Password
- name: 1Password - GPG nøgle
ansible.builtin.rpm_key:
key: https://downloads.1password.com/linux/keys/1password.asc
state: present
- name: 1Password - repo
ansible.builtin.yum_repository:
name: 1password
description: 1Password Stable Channel
baseurl: https://downloads.1password.com/linux/rpm/stable/$basearch
enabled: true
gpgcheck: true
repo_gpgcheck: true
gpgkey: https://downloads.1password.com/linux/keys/1password.asc
state: present
# Sublime Text
- name: Sublime Text - GPG nøgle
ansible.builtin.rpm_key:
key: https://download.sublimetext.com/sublimehq-rpm-pub.gpg
state: present
- name: Sublime Text - repo
ansible.builtin.command:
cmd: dnf config-manager addrepo --from-repofile=https://download.sublimetext.com/rpm/stable/x86_64/sublime-text.repo
args:
creates: /etc/yum.repos.d/sublime-text.repo
# LibreWolf
- name: LibreWolf - repo
ansible.builtin.command:
cmd: dnf config-manager addrepo --from-repofile=https://repo.librewolf.net/librewolf.repo
args:
creates: /etc/yum.repos.d/librewolf.repo
# Jottacloud
- name: Jottacloud - repo
ansible.builtin.yum_repository:
name: jotta-cli
description: Jottacloud CLI
baseurl: https://repo.jotta.cloud/redhat
gpgcheck: true
gpgkey: https://repo.jotta.cloud/public.gpg
state: present
# VSCodium
- name: VSCodium - repo
ansible.builtin.yum_repository:
name: gitlab.com_paulcarroty_vscodium_repo
description: gitlab.com_paulcarroty_vscodium_repo
baseurl: https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/rpms/
enabled: true
gpgcheck: true
repo_gpgcheck: true
gpgkey: https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg
metadata_expire: 1h
state: present
# Cider
- name: Cider - GPG nøgle
ansible.builtin.rpm_key:
key: https://repo.cider.sh/RPM-GPG-KEY
state: present
- name: Cider - repo
ansible.builtin.yum_repository:
name: cidercollective
description: Cider Collective Repository
baseurl: https://repo.cider.sh/rpm/RPMS
enabled: true
gpgcheck: true
gpgkey: https://repo.cider.sh/RPM-GPG-KEY
state: present
+60
View File
@@ -0,0 +1,60 @@
---
- name: RPM Fusion - Installer free og nonfree repos
ansible.builtin.dnf:
name:
- "https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-{{ ansible_distribution_major_version }}.noarch.rpm"
- "https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-{{ ansible_distribution_major_version }}.noarch.rpm"
state: present
- name: RPM Fusion - Aktiver Cisco OpenH264
ansible.builtin.command:
cmd: dnf config-manager setopt fedora-cisco-openh264.enabled=1
changed_when: false
- name: RPM Fusion - Opdater @core
ansible.builtin.dnf:
name: "@core"
state: latest
- name: RPM Fusion - Installer appstream data
ansible.builtin.dnf:
name: "rpmfusion-*-appstream-data"
state: present
- name: Multimedia - Swap ffmpeg-free til ffmpeg
ansible.builtin.command:
cmd: dnf swap -y ffmpeg-free ffmpeg --allowerasing
register: ffmpeg_swap
changed_when: "'Nothing to do' not in ffmpeg_swap.stdout"
failed_when: ffmpeg_swap.rc != 0 and 'already installed' not in ffmpeg_swap.stderr | default('')
- name: Multimedia - Opdater @multimedia
ansible.builtin.command:
cmd: dnf update -y @multimedia --setopt=install_weak_deps=False --exclude=PackageKit-gstreamer-plugin
changed_when: false
- name: Multimedia - Intel media driver (kun Intel CPU)
ansible.builtin.dnf:
name: intel-media-driver
state: present
when: ansible_processor | join(' ') | lower is search('intel')
- name: DVD - rpmfusion-free-release-tainted
ansible.builtin.dnf:
name: rpmfusion-free-release-tainted
state: present
- name: DVD - libdvdcss
ansible.builtin.dnf:
name: libdvdcss
state: present
- name: Firmware - rpmfusion-nonfree-release-tainted
ansible.builtin.dnf:
name: rpmfusion-nonfree-release-tainted
state: present
- name: Firmware - installer nonfree firmware
ansible.builtin.command:
cmd: dnf --repo=rpmfusion-nonfree-tainted install -y "*-firmware"
changed_when: false
+7
View File
@@ -0,0 +1,7 @@
---
- name: System - resolv.conf symlink (NetworkManager + systemd-resolved fix)
ansible.builtin.file:
src: /run/systemd/resolve/stub-resolv.conf
dest: /etc/resolv.conf
state: link
force: true
+21
View File
@@ -0,0 +1,21 @@
---
dnf_packages:
- fastfetch
- stow
- fish
- steam
- git
- gh
- nvim
- tldr
- btop
- 1password
- sublime-text
- mangojuice
- gamemode
- gamescope
- obs-studio
- jotta-cli
- codium
- rpmconf
- Cider
@@ -0,0 +1,14 @@
---
flatpak_packages:
- com.discordapp.Discord
- io.github.Faugus.faugus-launcher
- com.adamcake.Bolt
- com.notesnook.Notesnook
- com.saivert.pwvucontrol
- com.github.tchx84.Flatseal
- org.kde.kdenlive
- it.mijorus.gearlever
- com.github.Matoking.protontricks
- com.vysp3r.ProtonPlus
- org.musicbrainz.Picard
- io.github.lullabyX.sone