From 6f5266b63dc8c0a3156baf6803c3be151c25b67e Mon Sep 17 00:00:00 2001 From: Jonathan Cremin Date: Fri, 2 Feb 2024 15:40:15 +0000 Subject: [PATCH] Checkpoint --- README.md | 7 +- desktop.yml | 6 +- host_vars/desktop | 1 + host_vars/laptop | 3 + hosts | 6 +- k8s.yml | 10 ++ laptop.yml | 6 +- nano.yml | 9 ++ roles/base/defaults/main.yml | 3 +- roles/base/files/boost.service | 13 ++ roles/base/handlers/main.yml | 8 ++ roles/base/tasks/main.yml | 79 +++++------ roles/desktop/defaults/main.yml | 5 + .../files/100-mount-steam-proton.rules | 1 + roles/desktop/files/hashicorp.repo | 13 ++ roles/desktop/files/rpm.librewolf.net.repo | 4 - roles/desktop/handlers/main.yml | 15 +- roles/desktop/tasks/main.yml | 73 +++------- roles/docker/tasks/main.yml | 1 + roles/gnome/defaults/main.yml | 24 ++++ roles/gnome/tasks/main.yml | 5 +- roles/howdy/defaults/main.yml | 3 + roles/howdy/tasks/main.yml | 34 +++-- roles/kubernetes/defaults/main.yml | 0 roles/kubernetes/files/containerd-config.toml | 16 +++ roles/kubernetes/files/kubernetes.repo | 7 + .../kubernetes/files/modules-load-d-k8s.conf | 2 + roles/kubernetes/files/sysctl-d-k8s.conf | 3 + roles/kubernetes/handlers/main.yml | 2 + roles/kubernetes/tasks/main.yml | 39 +++++ roles/nvidia/tasks/main.yml | 42 +++++- roles/oversteer/tasks/main.yml | 38 +++++ roles/server/files/smb.conf | 46 ++++++ roles/server/handlers/main.yml | 28 ++++ roles/server/tasks/main.yml | 60 ++++++++ roles/ssh/templates/sshd_config.j2.new | 133 ++++++++++++++++++ roles/steam/tasks/main.yml | 7 + roles/syncthing/tasks/main.yml | 16 ++- roles/tailscale/tasks/main.yml | 1 - roles/xbox/tasks/main.yml | 3 +- server.yml | 3 +- work.yml | 13 ++ 42 files changed, 652 insertions(+), 136 deletions(-) create mode 100644 host_vars/laptop create mode 100644 k8s.yml create mode 100644 nano.yml create mode 100644 roles/base/files/boost.service create mode 100644 roles/base/handlers/main.yml create mode 100644 roles/desktop/defaults/main.yml create mode 100644 roles/desktop/files/100-mount-steam-proton.rules create mode 100644 roles/desktop/files/hashicorp.repo delete mode 100644 roles/desktop/files/rpm.librewolf.net.repo create mode 100644 roles/gnome/defaults/main.yml create mode 100644 roles/howdy/defaults/main.yml create mode 100644 roles/kubernetes/defaults/main.yml create mode 100644 roles/kubernetes/files/containerd-config.toml create mode 100644 roles/kubernetes/files/kubernetes.repo create mode 100644 roles/kubernetes/files/modules-load-d-k8s.conf create mode 100644 roles/kubernetes/files/sysctl-d-k8s.conf create mode 100644 roles/kubernetes/handlers/main.yml create mode 100644 roles/kubernetes/tasks/main.yml create mode 100644 roles/oversteer/tasks/main.yml create mode 100644 roles/server/files/smb.conf create mode 100644 roles/server/handlers/main.yml create mode 100644 roles/server/tasks/main.yml create mode 100644 roles/ssh/templates/sshd_config.j2.new create mode 100644 roles/steam/tasks/main.yml create mode 100644 work.yml diff --git a/README.md b/README.md index 98f9cde..5f43fba 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,9 @@ * Fractional scaling for Wayland `gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"` * Fix Nvidia sleep `sudo systemctl enable nvidia-{suspend,resume,hibernate}` * Write grub kernel params if needed `sudo grub2-mkconfig -o "$(readlink -e /etc/grub2.cfg)"` -* Activate tailscale \ No newline at end of file +* Activate tailscale +* Zoom needs `enableAlphaBuffer=false` in `~/.config/zoomus.conf` +* fstab needs `UUID=EC77-5380 /mnt/Beta exfat defaults,uid=jonathan 0 0` and `/home/jonathan/.steam/steam/steamapps/compatdata /mnt/Beta/SteamLibrary/steamapps/compatdata none defaults,bind,x-systemd.requires-mounts-for=/mnt/Beta 0 0` +* Need to install and configure Coolero +* Configure startup apps in Gnome Tweaks +* sudo grub-reboot "$(grep -i windows /boot/grub/grub.cfg|cut -d"'" -f2)" \ No newline at end of file diff --git a/desktop.yml b/desktop.yml index d0cd4dc..a8840d8 100644 --- a/desktop.yml +++ b/desktop.yml @@ -10,8 +10,8 @@ - { role: docker, tags: [ 'docker' ] } - { role: globalprotect, tags: [ 'globalprotect'] } - { role: tailscale, tags: [ 'tailscale'] } - - { role: scream, tags: [ 'scream'] } - - { role: virtualhere, tags: [ 'virtualhere'] } - { role: devdeck, tags: [ 'devdeck'] } - { role: syncthing, tags: [ 'syncthing' ] } - - { role: xbox, tags: [ 'xbox' ] } \ No newline at end of file + - { role: nvidia, tags: [ 'nvidia' ] } + - { role: howdy, tags: [ 'howdy' ] } + - { role: oversteer, tags: [ 'oversteer' ] } diff --git a/host_vars/desktop b/host_vars/desktop index b7ee9c8..8fea75b 100644 --- a/host_vars/desktop +++ b/host_vars/desktop @@ -14,3 +14,4 @@ virtualhere_license: !vault | 32326539646336663235353164623461353537303533626637363838653732623333373561303466 61333534316436366263646137643864343464303932626236616462373133346538663038376565 3232 +video_device: /dev/v4l/by-id/usb-046d_Logi_4K_Stream_Edition_55908139-video-index2 \ No newline at end of file diff --git a/host_vars/laptop b/host_vars/laptop new file mode 100644 index 0000000..41a6535 --- /dev/null +++ b/host_vars/laptop @@ -0,0 +1,3 @@ +--- + +video_device: /dev/video2 \ No newline at end of file diff --git a/hosts b/hosts index 4d5f586..1610d79 100644 --- a/hosts +++ b/hosts @@ -2,4 +2,8 @@ desktop ansible_connection=local laptop ansible_connection=local -magnus ansible_host=10.0.1.6 \ No newline at end of file +vault ansible_host=10.0.1.123 + +k8s-1 ansible_host=10.0.1.54 + +work ansible_connection=local \ No newline at end of file diff --git a/k8s.yml b/k8s.yml new file mode 100644 index 0000000..c73237d --- /dev/null +++ b/k8s.yml @@ -0,0 +1,10 @@ +--- + +- hosts: k8s-1 + roles: + - { role: base, tags: [ 'base'] } + - { role: server, tags: [ 'server'] } + - { role: users, tags: [ 'users'] } + - { role: ssh, tags: [ 'ssh'] } + - { role: kubernetes, tags: [ 'kubernetes'] } + - { role: tailscale, tags: [ 'tailscale'] } diff --git a/laptop.yml b/laptop.yml index 9a4a2b0..f953eba 100644 --- a/laptop.yml +++ b/laptop.yml @@ -1,6 +1,6 @@ --- -- hosts: desktop +- hosts: laptop roles: - { role: base, tags: [ 'base' ] } - { role: desktop, tags: [ 'desktop' ] } @@ -10,9 +10,7 @@ - { role: docker, tags: [ 'docker' ] } - { role: globalprotect, tags: [ 'globalprotect' ] } - { role: tailscale, tags: [ 'tailscale' ] } - - { role: scream, tags: [ 'scream' ] } - - { role: virtualhere, tags: [ 'virtualhere' ] } -# - { role: howdy, tags: [ 'howdy' ] } + - { role: howdy, tags: [ 'howdy' ] } - { role: nvidia, tags: [ 'nvidia' ] } - { role: syncthing, tags: [ 'syncthing' ] } - { role: openrazer, tags: [ 'openrazer' ] } diff --git a/nano.yml b/nano.yml new file mode 100644 index 0000000..f51ee69 --- /dev/null +++ b/nano.yml @@ -0,0 +1,9 @@ +--- + +- hosts: nano + + roles: + - { role: base, tags: [ 'base'] } + - { role: users, tags: [ 'users'] } + - { role: ssh, tags: [ 'ssh'] } + - { role: docker, tags: [ 'docker' ] } \ No newline at end of file diff --git a/roles/base/defaults/main.yml b/roles/base/defaults/main.yml index a563004..640c7bd 100644 --- a/roles/base/defaults/main.yml +++ b/roles/base/defaults/main.yml @@ -5,4 +5,5 @@ mkcert_version: "v1.4.3" btop_version: "1.0.22" kind_version: "v0.11.1" kubectl_version: "v1.23.3" -kompose_version: "v1.26.0" \ No newline at end of file +kompose_version: "v1.26.0" +minikube_version: "v1.29.0" diff --git a/roles/base/files/boost.service b/roles/base/files/boost.service new file mode 100644 index 0000000..0e165ee --- /dev/null +++ b/roles/base/files/boost.service @@ -0,0 +1,13 @@ +[Unit] +Description=Enable AMD boost +Before=basic.target +After=local-fs.target sysinit.target +DefaultDependencies=no + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "echo 1 > /sys/devices/system/cpu/cpufreq/boost" + +[Install] +WantedBy=basic.target + diff --git a/roles/base/handlers/main.yml b/roles/base/handlers/main.yml new file mode 100644 index 0000000..b88d57d --- /dev/null +++ b/roles/base/handlers/main.yml @@ -0,0 +1,8 @@ +--- + +- name: enable boost + systemd: + name: boost + enabled: yes + state: started + become: yes diff --git a/roles/base/tasks/main.yml b/roles/base/tasks/main.yml index b12a3be..610eecb 100644 --- a/roles/base/tasks/main.yml +++ b/roles/base/tasks/main.yml @@ -1,5 +1,22 @@ --- +- name: Add boost service for AMD 4800U + copy: + src: boost.service + mode: "0644" + dest: /lib/systemd/system/boost.service + when: ansible_processor[2] == "AMD Ryzen 7 4800U with Radeon Graphics" + notify: enable boost + become: yes + +- name: Disable SELinux because it's a nightmare with Podman + ansible.builtin.lineinfile: + path: /etc/selinux/config + regexp: '^SELINUX=' + line: SELINUX=disabled + become: yes + + - name: Install rpmfusion-free dnf: name: "https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-{{ ansible_distribution_major_version }}.noarch.rpm" @@ -25,6 +42,8 @@ dnf: name: - kernel-tools + - inotify-tools + - btop - sysbench - exa - iperf3 @@ -33,9 +52,9 @@ - make - direnv - ncdu - - restic - powertop - tmux + - btop - htop - openssh-server - curl @@ -81,69 +100,37 @@ dest: ~/.local/bin/mkcert mode: 0755 -- name: Fetch gh-cli repo - get_url: - url: https://cli.github.com/packages/rpm/gh-cli.repo - dest: /etc/yum.repos.d/gh-cli.repo - mode: 0644 - become: yes - - name: Fetch kind binary get_url: url: "https://kind.sigs.k8s.io/dl/{{ kind_version }}/kind-linux-amd64" dest: ~/.local/bin/kind mode: 0755 -- name: Fetch kubectl binary - get_url: - url: "https://dl.k8s.io/release/{{ kubectl_version }}/bin/linux/amd64/kubectl" - dest: ~/.local/bin/kubectl - mode: 0755 - - name: Fetch kompose binary get_url: url: "https://github.com/kubernetes/kompose/releases/download/{{ kompose_version }}/kompose-linux-amd64" dest: ~/.local/bin/kompose mode: 0755 +- name: Fetch minikube binary + get_url: + url: "https://github.com/kubernetes/minikube/releases/download/{{ minikube_version }}/minikube-linux-amd64" + dest: ~/.local/bin/minikube + mode: 0755 + +- name: Fetch gh-cli repo + get_url: + url: https://cli.github.com/packages/rpm/gh-cli.repo + dest: /etc/yum.repos.d/gh-cli.repo + mode: 0644 + become: yes + - name: Install gh-cli dnf: name: gh state: present become: yes -- name: create ~/.local/share/btop/themes - file: - path: ~/.local/share/btop/themes - state: directory - mode: '0755' - -- name: Fetch btop tarball and extract to ~/.local - unarchive: - src: https://github.com/aristocratos/btop/releases/download/v{{ btop_version }}/btop-{{ btop_version }}-x86_64-linux-musl.tbz - dest: ~/.local/ - remote_src: yes - exclude: - - CHANGES.md - - install.sh - - LICENSE - - Makefile - - README.md - - setuid.sh - - uninstall.sh - creates: ~/.local/bin/btop - -- name: Move btop themes to correct path - copy: - src: ~/.local/themes - dest: ~/.local/share/btop/ - remote_src: yes - -- name: pip install yt-dlp - pip: - name: yt-dlp - state: present - - name: Enable copr project varlad/onefetch community.general.copr: name: varlad/onefetch diff --git a/roles/desktop/defaults/main.yml b/roles/desktop/defaults/main.yml new file mode 100644 index 0000000..6da420d --- /dev/null +++ b/roles/desktop/defaults/main.yml @@ -0,0 +1,5 @@ +--- + +zoom_version: "5.17.5.2543" +fx_cast_version: "v0.3.0" +open_audible_version: "3.9.6" diff --git a/roles/desktop/files/100-mount-steam-proton.rules b/roles/desktop/files/100-mount-steam-proton.rules new file mode 100644 index 0000000..c47823b --- /dev/null +++ b/roles/desktop/files/100-mount-steam-proton.rules @@ -0,0 +1 @@ +ACTION=="add", ATTRS{idVendor}=="0781", ATTRS{idProduct}=="55ae", RUN+="/usr/bin/setsid /home/jonathan/.bin/exfat-proton-mount" \ No newline at end of file diff --git a/roles/desktop/files/hashicorp.repo b/roles/desktop/files/hashicorp.repo new file mode 100644 index 0000000..5e06b88 --- /dev/null +++ b/roles/desktop/files/hashicorp.repo @@ -0,0 +1,13 @@ +[hashicorp] +name=Hashicorp Stable - $basearch +baseurl=https://rpm.releases.hashicorp.com/fedora/$releasever/$basearch/stable +enabled=1 +gpgcheck=1 +gpgkey=https://rpm.releases.hashicorp.com/gpg + +[hashicorp-test] +name=Hashicorp Test - $basearch +baseurl=https://rpm.releases.hashicorp.com/fedora/$releasever/$basearch/test +enabled=0 +gpgcheck=1 +gpgkey=https://rpm.releases.hashicorp.com/gpg \ No newline at end of file diff --git a/roles/desktop/files/rpm.librewolf.net.repo b/roles/desktop/files/rpm.librewolf.net.repo deleted file mode 100644 index 106ad2d..0000000 --- a/roles/desktop/files/rpm.librewolf.net.repo +++ /dev/null @@ -1,4 +0,0 @@ -[rpm.librewolf.net] -name=Librewolf -baseurl=https://rpm.librewolf.net -enabled=1 \ No newline at end of file diff --git a/roles/desktop/handlers/main.yml b/roles/desktop/handlers/main.yml index 7c431a6..15ba27b 100644 --- a/roles/desktop/handlers/main.yml +++ b/roles/desktop/handlers/main.yml @@ -16,4 +16,17 @@ name: boost enabled: yes state: started - become: yes \ No newline at end of file + become: yes + +- name: enable systemd proton mount + systemd: + name: proton.mount + enabled: yes + state: started + become: yes + +- name: reload udev + service: + name: udev + state: reloaded + become: yes diff --git a/roles/desktop/tasks/main.yml b/roles/desktop/tasks/main.yml index 8ce458e..8097723 100644 --- a/roles/desktop/tasks/main.yml +++ b/roles/desktop/tasks/main.yml @@ -1,27 +1,10 @@ --- -- name: Add boost service for AMD 4800U - copy: - src: boost.service - mode: "0644" - dest: /lib/systemd/system/boost.service - when: ansible_processor[2] == "AMD Ryzen 7 4800U with Radeon Graphics" - notify: enable boost - become: yes - -- name: Disable SELinux because it's a nightmare with Podman - ansible.builtin.lineinfile: - path: /etc/selinux/config - regexp: '^SELINUX=' - line: SELINUX=disabled - become: yes - - name: Import dnf keys rpm_key: state: present key: '{{ item }}' loop: - - https://packagecloud.io/gpg.key - https://packages.microsoft.com/keys/microsoft.asc - https://rpm.releases.teleport.dev/RPM-GPG-KEY-teleport - https://downloads.1password.com/linux/keys/1password.asc @@ -34,23 +17,22 @@ mode: "0644" dest: '/etc/yum.repos.d/{{ item }}' loop: - - slack.repo - vscode.repo - teleport.repo - 1password.repo - - rpm.librewolf.net.repo + - hashicorp.repo become: yes - name: Install common desktop dnf packages dnf: name: - - deja-dup + - liquidctl - power-profiles-daemon # Adds power settings in gnome-settings-center - - chrome-gnome-shell - celluloid - cheese - geary - pavucontrol + - gnome-browser-connector - gnome-shell-extension-appindicator - gnome-shell-extension-gsconnect - gnome-nettool @@ -58,19 +40,22 @@ - gnome-calendar - gnome-clocks - gnome-tweaks - - bijiben # gnome notes - tilix - nodejs - mpv - steam - ffmpeg - - slack - 1password - code - teleport - - librewolf - mangohud - enablerepo: + - solaar + - terraform + - adobe-source-sans-pro-fonts + - v4l-utils + - v4l2loopback + - akmod-v4l2loopback + enablerepo: - rpmfusion-free - rpmfusion-nonfree-steam state: present @@ -85,46 +70,34 @@ - name: Install flatpaks from flathub flatpak: - name: - - com.gigitux.youp + name: - com.discordapp.Discord - im.riot.Riot - org.telegram.desktop - com.plexamp.Plexamp - nl.g4d.Girens - tech.feliciano.pocket-casts - - org.gnome.TextEditor - com.mattjakeman.ExtensionManager - md.obsidian.Obsidian - org.pipewire.Helvum + - com.github.tchx84.Flatseal + - com.github.maoschanz.drawing + - com.belmoussaoui.Obfuscate + - de.haeckerfelix.Fragments + - org.gnome.World.PikaBackup + - org.pitivi.Pitivi + - rest.insomnia.Insomnia + - io.dbeaver.DBeaverCommunity state: present remote: flathub method: user -- name: Add the knapsu flatpak repository remote to the user installation - flatpak_remote: - name: knapsu - state: present - flatpakrepo_url: https://flatpak.knapsu.eu/plex-media-player.flatpakrepo - method: user - -- name: Install flatpaks from knapsu - flatpak: - name: - - tv.plex.PlexMediaPlayer - state: present - remote: knapsu - method: user - - name: Install remote rpms dnf: - name: - - https://cdn.zoom.us/prod/v5.10.4/zoom_x86_64.rpm - - https://github.com/hensm/fx_cast/releases/download/v0.2.0/fx_cast_bridge-0.2.0-x64.rpm - - https://github.com/Kong/insomnia/releases/download/core%402021.5.3/Insomnia.Core-2021.5.3.rpm - - https://github.com/openaudible/openaudible/releases/download/v3.4.3/OpenAudible_3.4.3_x86_64.rpm - - https://github.com/Mastermindzh/tidal-hifi/releases/download/2.7.1/tidal-hifi-2.7.1.x86_64.rpm - - https://github.com/iongion/podman-desktop-companion/releases/download/4.0.3-rc.2/podman-desktop-companion-x86_64-4.0.3-rc.2.rpm + name: + - "https://cdn.zoom.us/prod/{{ zoom_version }}/zoom_x86_64.rpm" + #- https://github.com/hensm/fx_cast/releases/download/{{ fx_cast_version }}/fx_cast_bridge-{{ fx_cast_version }}-x64.rpm + #- https://github.com/openaudible/openaudible/releases/download/v{{ open_audible_version }}/OpenAudible_{{ open_audible_version }}_x86_64.rpm state: present disable_gpg_check: 1 become: yes diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 1f7bd25..a81fee9 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -11,6 +11,7 @@ systemd: name: docker state: started + enabled: true become: yes - name: Install docker-compose diff --git a/roles/gnome/defaults/main.yml b/roles/gnome/defaults/main.yml new file mode 100644 index 0000000..4c375f8 --- /dev/null +++ b/roles/gnome/defaults/main.yml @@ -0,0 +1,24 @@ +--- + +keyboard_shortcuts: + - id: 0 + command: "'/home/jonathan/.bin/audio-switch Audioengine'" + shortcut: "'1'" + name: "'Audioengine Speakers'" + - id: 1 + command: "'/home/jonathan/.bin/audio-switch \"USB Audio Speakers\"'" + shortcut: "'2'" + name: "'Sonos Port'" + - id: 2 + command: "'/home/jonathan/.bin/audio-switch arctis'" + shortcut: "'3'" + name: "'Arctis Nova Pro'" + - id: 3 + command: "'/home/jonathan/.bin/audio-switch \"USB Audio Front Headphones\"'" + shortcut: "'4'" + name: "'Front Headphones'" + - id: 4 + command: "'/home/jonathan/.bin/audio-switch xm5'" + shortcut: "'5'" + name: "'XM5s'" + \ No newline at end of file diff --git a/roles/gnome/tasks/main.yml b/roles/gnome/tasks/main.yml index b6c8a4d..2ae368d 100644 --- a/roles/gnome/tasks/main.yml +++ b/roles/gnome/tasks/main.yml @@ -1,8 +1,5 @@ --- -# Run gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize' -# Run gsettings set org.gnome.shell app-picker-layout "[]" - - name: Install gnome-extensions-cli pip: name: gnome-extensions-cli @@ -15,9 +12,9 @@ with_items: - hue-lights@chlumskyvaclav.gmail.com - espresso@coadmunkee.github.com - - sound-output-device-chooser@kgshank.net - logomenu@aryan_k - expandable-notifications@kaan.g.inam.org - gsconnect@andyholmes.github.io - bluetooth-quick-connect@bjarosze.gmail.com - appindicatorsupport@rgcjonas.gmail.com + - gTile@vibou diff --git a/roles/howdy/defaults/main.yml b/roles/howdy/defaults/main.yml new file mode 100644 index 0000000..acde23d --- /dev/null +++ b/roles/howdy/defaults/main.yml @@ -0,0 +1,3 @@ +--- + +video_device: /dev/video4 \ No newline at end of file diff --git a/roles/howdy/tasks/main.yml b/roles/howdy/tasks/main.yml index 5b533f9..29fb834 100644 --- a/roles/howdy/tasks/main.yml +++ b/roles/howdy/tasks/main.yml @@ -1,12 +1,5 @@ --- -- name: Install rpmsphere-release - dnf: - name: https://github.com/rpmsphere/noarch/raw/master/r/rpmsphere-release-{{ ansible_distribution_major_version }}.noarch.rpm - state: present - disable_gpg_check: 1 - become: yes - - name: Install dlib dnf: name: @@ -15,10 +8,10 @@ state: present become: yes -- name: Enable copr project howdy +- name: Enable copr principis/howdy community.general.copr: - name: luya/howdy - state: disabled + name: principis/howdy + state: enabled become: yes - name: Install howdy @@ -26,3 +19,24 @@ name: howdy state: present become: yes + +- name: Configure video device for Howdy + replace: + path: /lib64/security/howdy/config.ini + regexp: '(^device_path\s=\s)(.*)$' + replace: '\1{{ video_device }}' + backup: yes + become: yes + +- name: Configure Howdy for sudo + ansible.builtin.lineinfile: + path: /etc/pam.d/sudo + line: "auth sufficient pam_python.so /lib64/security/howdy/pam.py" + become: yes + +- name: Configure Howdy for Gnome login + ansible.builtin.lineinfile: + path: /etc/pam.d/gdm-password + insertafter: 'pam_selinux_permit.so' + line: "auth sufficient pam_python.so /lib64/security/howdy/pam.py" + become: yes \ No newline at end of file diff --git a/roles/kubernetes/defaults/main.yml b/roles/kubernetes/defaults/main.yml new file mode 100644 index 0000000..e69de29 diff --git a/roles/kubernetes/files/containerd-config.toml b/roles/kubernetes/files/containerd-config.toml new file mode 100644 index 0000000..3a54f32 --- /dev/null +++ b/roles/kubernetes/files/containerd-config.toml @@ -0,0 +1,16 @@ +version = 2 + +[plugins] + [plugins."io.containerd.grpc.v1.cri"] + [plugins."io.containerd.grpc.v1.cri".containerd] + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] + runtime_type = "io.containerd.runc.v2" + [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] + SystemdCgroup = true + [plugins."io.containerd.grpc.v1.cri".cni] + bin_dir = "/usr/libexec/cni/" + conf_dir = "/etc/cni/net.d" + + [plugins."io.containerd.internal.v1.opt"] + path = "/var/lib/containerd/opt" diff --git a/roles/kubernetes/files/kubernetes.repo b/roles/kubernetes/files/kubernetes.repo new file mode 100644 index 0000000..99128c2 --- /dev/null +++ b/roles/kubernetes/files/kubernetes.repo @@ -0,0 +1,7 @@ +[kubernetes] +name=Kubernetes +baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch +enabled=1 +gpgcheck=1 +gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg +exclude=kubelet kubeadm kubectl diff --git a/roles/kubernetes/files/modules-load-d-k8s.conf b/roles/kubernetes/files/modules-load-d-k8s.conf new file mode 100644 index 0000000..43dd543 --- /dev/null +++ b/roles/kubernetes/files/modules-load-d-k8s.conf @@ -0,0 +1,2 @@ +overlay +br_netfilter diff --git a/roles/kubernetes/files/sysctl-d-k8s.conf b/roles/kubernetes/files/sysctl-d-k8s.conf new file mode 100644 index 0000000..8df03f1 --- /dev/null +++ b/roles/kubernetes/files/sysctl-d-k8s.conf @@ -0,0 +1,3 @@ +net.bridge.bridge-nf-call-iptables = 1 +net.bridge.bridge-nf-call-ip6tables = 1 +net.ipv4.ip_forward = 1 diff --git a/roles/kubernetes/handlers/main.yml b/roles/kubernetes/handlers/main.yml new file mode 100644 index 0000000..cd21505 --- /dev/null +++ b/roles/kubernetes/handlers/main.yml @@ -0,0 +1,2 @@ +--- + diff --git a/roles/kubernetes/tasks/main.yml b/roles/kubernetes/tasks/main.yml new file mode 100644 index 0000000..63e2470 --- /dev/null +++ b/roles/kubernetes/tasks/main.yml @@ -0,0 +1,39 @@ +--- + +- name: Add dnf repo for kubernetes + copy: + src: kubernetes.repo + mode: "0644" + dest: /etc/yum.repos.d/kubernetes.repo + become: yes + +- name: Configure containerd for k8s + copy: + src: containerd-config.toml + mode: "0644" + dest: /etc/containerd/config.toml + become: yes + +- name: Install kubernetes dnf packages + dnf: + name: + - kubeadm + - kubelet + - kubectl + - containerd + disable_excludes: kubernetes + become: yes + +- name: Enable kernel mods for k8s + copy: + src: modules-load-d-k8s.conf + mode: "0644" + dest: /etc/modules-load.d/k8s.conf + become: yes + +- name: Set kernel params for k8s + copy: + src: sysctl-d-k8s.conf + mode: "0644" + dest: /etc/sysctl.d/k8s.conf + become: yes diff --git a/roles/nvidia/tasks/main.yml b/roles/nvidia/tasks/main.yml index 8779c77..5dc6186 100644 --- a/roles/nvidia/tasks/main.yml +++ b/roles/nvidia/tasks/main.yml @@ -4,4 +4,44 @@ dnf: name: - xorg-x11-drv-nvidia-cuda - become: yes \ No newline at end of file + become: yes + +- name: Install nvtop dependencies + dnf: + name: + - libdrm-devel + - ncurses-devel + - cmake + - gcc-c++ + become: yes + +- name: Clone syllo/nvtop + git: + repo: 'https://github.com/syllo/nvtop.git' + version: master + dest: ~/.cache/syllo-nvtop + +- name: Create nvtop build dir + file: + dest: ~/.cache/syllo-nvtop/build + mode: '0755' + state: directory + +- name: Cmake the nvtop Makefiles + command: + chdir: ~/.cache/syllo-nvtop/build + cmd: cmake .. -DNVIDIA_SUPPORT=ON + creates: ~/.cache/syllo-nvtop/build/Makefile + +- name: Make all the nvtop things + command: + chdir: ~/.cache/syllo-nvtop/build + cmd: make + creates: ~/.cache/syllo-nvtop/build/src/nvtop + +- name: make install nvtop + command: + chdir: /home/jonathan/.cache/syllo-nvtop/build + cmd: make install + creates: /usr/local/bin/nvtop + become: yes diff --git a/roles/oversteer/tasks/main.yml b/roles/oversteer/tasks/main.yml new file mode 100644 index 0000000..8ed6210 --- /dev/null +++ b/roles/oversteer/tasks/main.yml @@ -0,0 +1,38 @@ +--- + +- name: Install dependencies + dnf: + name: + - python3 + - python3-distutils-extra + - python3-gobject + - python3-pyudev + - python3-pyxdg + - python3-evdev + - gettext + - meson + - appstream + - desktop-file-utils + - python3-matplotlib-gtk3 + - python3-scipy + state: present + become: yes + +- name: Clone berarma/oversteer + git: + repo: 'https://github.com/berarma/oversteer.git' + version: master + dest: ~/.cache/berarma-oversteer + +- name: meson build + command: + chdir: ~/.cache/berarma-oversteer/ + cmd: meson build + creates: ~/.cache/berarma-oversteer/build + +- name: ninja install + command: + chdir: /home/jonathan/.cache/berarma-oversteer/build + cmd: ninja install + creates: /usr/local/bin/oversteer + become: yes diff --git a/roles/server/files/smb.conf b/roles/server/files/smb.conf new file mode 100644 index 0000000..3548e6a --- /dev/null +++ b/roles/server/files/smb.conf @@ -0,0 +1,46 @@ +# See smb.conf.example for a more detailed config file or +# read the smb.conf manpage. +# Run 'testparm' to verify the config is correct after +# you modified it. +# +# Note: +# SMB1 is disabled by default. This means clients without support for SMB2 or +# SMB3 are no longer able to connect to smbd (by default). + +[global] + workgroup = SAMBA + security = user + + passdb backend = tdbsam + + printing = cups + printcap name = cups + load printers = yes + cups options = raw + + # Install samba-usershares package for support + include = /etc/samba/usershares.conf + + include = registry + +[homes] + comment = Home Directories + valid users = %S, %D%w%S + browseable = No + read only = No + inherit acls = Yes + +[printers] + comment = All Printers + path = /var/tmp + printable = Yes + create mask = 0600 + browseable = No + +[print$] + comment = Printer Drivers + path = /var/lib/samba/drivers + write list = @printadmin root + force group = @printadmin + create mask = 0664 + directory mask = 0775 \ No newline at end of file diff --git a/roles/server/handlers/main.yml b/roles/server/handlers/main.yml new file mode 100644 index 0000000..9190bf5 --- /dev/null +++ b/roles/server/handlers/main.yml @@ -0,0 +1,28 @@ +--- + - name: enable nfs-server + service: + name: nfs-server + state: started + enabled: true + become: yes + + - name: enable libvirtd + service: + name: libvirtd + state: started + enabled: true + become: yes + + - name: enable pmlogger + service: + name: pmlogger + state: started + enabled: true + become: yes + + - name: restart smb + service: + name: smb + state: restart + enabled: true + become: yes diff --git a/roles/server/tasks/main.yml b/roles/server/tasks/main.yml new file mode 100644 index 0000000..2f054a8 --- /dev/null +++ b/roles/server/tasks/main.yml @@ -0,0 +1,60 @@ +--- + +- name: Add gpu packages for intel + dnf: + name: + - intel-media-driver + - libva-utils + - libvdpau-va-gl + - intel-gpu-tools + enablerepo: rpmfusion-free + state: present + when: ansible_processor[2] == "Intel(R) Celeron(R) N5105 @ 2.00GHz" + become: yes + +- name: Add server-only packages + dnf: + name: + - sqlite + - cockpit-machines + - cockpit-podman + - cockpit-file-sharing + - nfs-utils + - borgbackup + notify: enable nfs-server + become: yes + +- name: Add pcp metric-collection packages + dnf: + name: + - pcp + - pcp-conf + - pcp-libs + - pcp-selinux + notify: enable pmlogger + become: yes + +- name: Add libvirt + dnf: + name: + - libvirt + notify: enable libvirtd + become: yes + +- name: Update smb.conf for registry + copy: + src: smb.conf + mode: "0644" + dest: /etc/samba/smb.conf + notify: restart smb + become: yes + +- name: Increase max user watches + sysctl: + name: fs.inotify.max_user_watches + value: '524288' + sysctl_file: /etc/sysctl.d/max_user_watches.conf + sysctl_set: yes + state: present + reload: yes + become: yes diff --git a/roles/ssh/templates/sshd_config.j2.new b/roles/ssh/templates/sshd_config.j2.new new file mode 100644 index 0000000..9effefa --- /dev/null +++ b/roles/ssh/templates/sshd_config.j2.new @@ -0,0 +1,133 @@ +# $OpenBSD: sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $ + +# This is the sshd server system-wide configuration file. See +# sshd_config(5) for more information. + +# This sshd was compiled with PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin + +# The strategy used for options in the default sshd_config shipped with +# OpenSSH is to specify options with their default value where +# possible, but leave them commented. Uncommented options override the +# default value. + +# To modify the system-wide sshd configuration, create a *.conf file under +# /etc/ssh/sshd_config.d/ which will be automatically included below +Include /etc/ssh/sshd_config.d/*.conf + +# If you want to change the port on a SELinux system, you have to tell +# SELinux about this change. +# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER +# +#Port 22 +#AddressFamily any +#ListenAddress 0.0.0.0 +#ListenAddress :: + +#HostKey /etc/ssh/ssh_host_rsa_key +#HostKey /etc/ssh/ssh_host_ecdsa_key +#HostKey /etc/ssh/ssh_host_ed25519_key + +# Ciphers and keying +#RekeyLimit default none + +# Logging +#SyslogFacility AUTH +#LogLevel INFO + +# Authentication: + +#LoginGraceTime 2m +PermitRootLogin no +#StrictModes yes +#MaxAuthTries 6 +#MaxSessions 10 + +#PubkeyAuthentication yes + +# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 +# but this is overridden so installations will only check .ssh/authorized_keys +AuthorizedKeysFile .ssh/authorized_keys + +#AuthorizedPrincipalsFile none + +#AuthorizedKeysCommand none +#AuthorizedKeysCommandUser nobody + +# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts +#HostbasedAuthentication no +# Change to yes if you don't trust ~/.ssh/known_hosts for +# HostbasedAuthentication +#IgnoreUserKnownHosts no +# Don't read the user's ~/.rhosts and ~/.shosts files +#IgnoreRhosts yes + +# To disable tunneled clear text passwords, change to no here! +PasswordAuthentication no +#PermitEmptyPasswords no + +# Change to no to disable s/key passwords +#KbdInteractiveAuthentication yes + +# Kerberos options +#KerberosAuthentication no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes +#KerberosGetAFSToken no +#KerberosUseKuserok yes + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes +#GSSAPIStrictAcceptorCheck yes +#GSSAPIKeyExchange no +#GSSAPIEnablek5users no + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the KbdInteractiveAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via KbdInteractiveAuthentication may bypass +# the setting of "PermitRootLogin without-password". +# If you just want the PAM account and session checks to run without +# PAM authentication, then enable this but set PasswordAuthentication +# and KbdInteractiveAuthentication to 'no'. +# WARNING: 'UsePAM no' is not supported in Fedora and may cause several +# problems. +#UsePAM no + +#AllowAgentForwarding yes +#AllowTcpForwarding yes +#GatewayPorts no +#X11Forwarding no +#X11DisplayOffset 10 +#X11UseLocalhost yes +#PermitTTY yes +#PrintMotd yes +#PrintLastLog yes +#TCPKeepAlive yes +#PermitUserEnvironment no +#Compression delayed +#ClientAliveInterval 0 +#ClientAliveCountMax 3 +#UseDNS no +#PidFile /var/run/sshd.pid +#MaxStartups 10:30:100 +#PermitTunnel no +#ChrootDirectory none +#VersionAddendum none + +# no default banner path +#Banner none + +# Allow client to pass locale environment variables +AcceptEnv LANG LC_* + +# override default of no subsystems +Subsystem sftp /usr/libexec/openssh/sftp-server + +# Example of overriding settings on a per-user basis +#Match User anoncvs +# X11Forwarding no +# AllowTcpForwarding no +# PermitTTY no +# ForceCommand cvs server diff --git a/roles/steam/tasks/main.yml b/roles/steam/tasks/main.yml new file mode 100644 index 0000000..c0ba00a --- /dev/null +++ b/roles/steam/tasks/main.yml @@ -0,0 +1,7 @@ +--- + +- name: Link proton directories + file: + src: /home/jonathan/.local/share/Steam + dest: ~/.local/bin/firefox-dev + state: link \ No newline at end of file diff --git a/roles/syncthing/tasks/main.yml b/roles/syncthing/tasks/main.yml index 529ac2b..5c7e27f 100644 --- a/roles/syncthing/tasks/main.yml +++ b/roles/syncthing/tasks/main.yml @@ -27,6 +27,7 @@ - /home/jonathan/Sync - /home/jonathan/Code - /home/jonathan/Udemy + - /home/jonathan/Photos - name: Create and start Syncthing container @@ -38,13 +39,14 @@ PUID: "0" PGID: "0" volume: - - /home/jonathan/.config/podman/etc/syncthing:/var/syncthing/config:Z - - /home/jonathan/.config/podman/syncthing/:/var/syncthing:Z - - /home/jonathan/Sync:/home/jonathan/Sync:Z - - /home/jonathan/Code:/home/jonathan/Code:Z - - /home/jonathan/Udemy:/home/jonathan/Udemy:Z - - /home/jonathan/Pictures:/home/jonathan/Pictures:Z - - /home/jonathan/Documents:/home/jonathan/Documents:Z + - /home/jonathan/.config/podman/etc/syncthing:/var/syncthing/config + - /home/jonathan/.config/podman/syncthing/:/var/syncthing + - /home/jonathan/Sync:/home/jonathan/Sync + - /home/jonathan/Code:/home/jonathan/Code + - /home/jonathan/Udemy:/home/jonathan/Udemy + - /home/jonathan/Pictures:/home/jonathan/Pictures + - /home/jonathan/Photos:/home/jonathan/Photos + - /home/jonathan/Documents:/home/jonathan/Documents network: host restart_policy: on-failure:5 diff --git a/roles/tailscale/tasks/main.yml b/roles/tailscale/tasks/main.yml index 954054d..adfbc0b 100644 --- a/roles/tailscale/tasks/main.yml +++ b/roles/tailscale/tasks/main.yml @@ -4,7 +4,6 @@ command: cmd: dnf config-manager --add-repo https://pkgs.tailscale.com/stable/fedora/tailscale.repo creates: /etc/yum.repos.d/tailscale.repo - warn: false become: yes - name: Install tailscale diff --git a/roles/xbox/tasks/main.yml b/roles/xbox/tasks/main.yml index f1d31d4..68ab233 100644 --- a/roles/xbox/tasks/main.yml +++ b/roles/xbox/tasks/main.yml @@ -19,4 +19,5 @@ # exit 1 # fi -# do the things in https://github.com/medusalix/xone/blob/master/install.sh \ No newline at end of file +# do the things in https://github.com/medusalix/xone/blob/master/install.sh + diff --git a/server.yml b/server.yml index 8f9c8f8..79bc415 100644 --- a/server.yml +++ b/server.yml @@ -1,8 +1,9 @@ --- -- hosts: magnus +- hosts: vault roles: - { role: base, tags: [ 'base'] } + - { role: server, tags: [ 'server'] } - { role: users, tags: [ 'users'] } - { role: ssh, tags: [ 'ssh'] } - { role: docker, tags: [ 'docker'] } diff --git a/work.yml b/work.yml new file mode 100644 index 0000000..a0ed03c --- /dev/null +++ b/work.yml @@ -0,0 +1,13 @@ +--- + +- hosts: work + roles: + - { role: base, tags: [ 'base'] } + - { role: desktop, tags: [ 'desktop'] } + - { role: gnome, tags: [ 'gnome' ] } + - { role: users, tags: [ 'users'] } + - { role: ssh, tags: [ 'ssh'] } + - { role: docker, tags: [ 'docker' ] } + - { role: globalprotect, tags: [ 'globalprotect'] } + - { role: tailscale, tags: [ 'tailscale'] } + - { role: syncthing, tags: [ 'syncthing' ] }