commit a7eaa7dbfb6d99d59b37833f0d717eb33ab9bed0 Author: Jonathan Cremin Date: Wed Apr 29 21:51:12 2020 +0100 Desktop setup diff --git a/hosts b/hosts new file mode 100644 index 0000000..0acf994 --- /dev/null +++ b/hosts @@ -0,0 +1,5 @@ +[kudos] +localhost ansible_connection=local + +[pi] +10.0.1.29 ansible_user=ubuntu \ No newline at end of file diff --git a/kudos.yml b/kudos.yml new file mode 100644 index 0000000..9a1efa5 --- /dev/null +++ b/kudos.yml @@ -0,0 +1,11 @@ +--- + +- hosts: kudos + roles: + # - common + # - users + # - docker + # - raid + - network + # - vm + \ No newline at end of file diff --git a/pi.yml b/pi.yml new file mode 100644 index 0000000..0b723b8 --- /dev/null +++ b/pi.yml @@ -0,0 +1,6 @@ +--- + + - hosts: pi + roles: + - docker + \ No newline at end of file diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100644 index 0000000..6fc481f --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,87 @@ +--- + +- name: Install common apt packages + apt: + name: + - zsh + - mdadm + - direnv + - mpv + - tmux + - htop + - baobab + - openssh-server + - chrome-gnome-shell + - python3-pip + - cheese + - geary + - baobab + - curl + - celluloid + - openssh-server + - neofetch + - gnome-boxes + - virt-manager + - vim + - blueman + - pavucontrol + - gnome-shell-extension-shortcuts + - gnome-shell-extension-system-monitor + - gnome-shell-extension-top-icons-plus + - gnome-shell-extension-gsconnect + - gnome-shell-extension-gsconnect-browsers + - gnome-nettool + - gnome-maps + - gnome-calendar + - gnome-clocks + state: present + become: yes + +- name: Install common snaps with --classic + snap: + name: + - microk8s + classic: yes + state: present + become: yes + +- name: Install common snaps + snap: + name: + - code + - chromium + - canonical-livepatch + - dbeaver-ce + - discord + - glimpse-editor + - qownnotes + - remmina + - riot-web + - spotify + - vlc + - zoom-client + state: present + become: yes + +- name: Uninstall default pulseaudio-module-bluetooth + apt: + name: pulseaudio-module-bluetooth + state: absent + become: yes + +- name: Install bluetooth audio deps + apt: + name: + - libavcodec-extra58 + - libfdk-aac1 + - bluez + - pulseaudio + become: yes + +- name: Install bluetooth audio codec debs + apt: + deb: "{{item}}" + with_items: + - https://f.bytefuse.net/pulseaudio-modules-bt-ppa/focal/libldac_2.0.2.3-1_amd64.deb + - https://f.bytefuse.net/pulseaudio-modules-bt-ppa/focal/pulseaudio-modules-bt_1.3-1_amd64.deb + become: yes \ No newline at end of file diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml new file mode 100644 index 0000000..3eae6d5 --- /dev/null +++ b/roles/docker/tasks/main.yml @@ -0,0 +1,22 @@ +--- + +- name: Install docker + apt: name=docker.io state=present + become: yes + +- name: Make sure docker is running + systemd: + state: started + name: docker + become: yes + +- name: Install docker-compose + apt: name=docker-compose state=present + become: yes + +- name: Add jonathan to docker group + user: + name: jonathan + groups: docker + append: yes + become: yes \ No newline at end of file diff --git a/roles/network/tasks/main.yml b/roles/network/tasks/main.yml new file mode 100644 index 0000000..e76b07b --- /dev/null +++ b/roles/network/tasks/main.yml @@ -0,0 +1,29 @@ +--- + +- name: Try nmcli add Ethernet - conn_name only & ip4 gw4 + nmcli: + type: ethernet + conn_name: "Wired connection 1" + ifname: enp8s0 + ip4: 10.0.1.2 + gw4: 10.0.1.1 + dns4: 9.9.9.9 + state: present + become: yes + +- name: Try nmcli add Ethernet - conn_name only & ip4 gw4 + nmcli: + type: ethernet + conn_name: "Wired connection 2" + ifname: enp9s0 + ip4: 10.0.1.9 + gw4: 10.0.1.1 + dns4: 9.9.9.9 + state: present + become: yes + +- name: Restart network + service: + name: NetworkManager + state: restarted + become: yes \ No newline at end of file diff --git a/roles/raid/tasks/main.yml b/roles/raid/tasks/main.yml new file mode 100644 index 0000000..ebc665d --- /dev/null +++ b/roles/raid/tasks/main.yml @@ -0,0 +1,11 @@ +--- + +- name: Mount mdadm arrays + mount: + path: "{{ item.path }}" + src: "{{ item.device }}" + fstype: ext4 + state: mounted + loop: + - { device: /dev/md0, path: /data } + become: yes \ No newline at end of file diff --git a/roles/users/tasks/main.yml b/roles/users/tasks/main.yml new file mode 100644 index 0000000..9cf9a36 --- /dev/null +++ b/roles/users/tasks/main.yml @@ -0,0 +1,20 @@ +--- + +- name: Add user jonathan + user: + name: jonathan + comment: Jonathan Cremin + uid: 1000 + groups: jonathan,adm,cdrom,sudo,dip,plugdev,lpadmin,lxd,sambashare + shell: /bin/zsh + append: yes + become: yes + +- name: Passwordless sudo for jonathan + lineinfile: + path: /etc/sudoers + state: present + regexp: '^%sudo' + line: '%sudo ALL=(ALL) NOPASSWD: ALL' + validate: /usr/sbin/visudo -cf %s + become: yes \ No newline at end of file diff --git a/roles/vm/handlers/main.yml b/roles/vm/handlers/main.yml new file mode 100644 index 0000000..bcf905f --- /dev/null +++ b/roles/vm/handlers/main.yml @@ -0,0 +1,7 @@ +--- + - name: restart libvirtd + service: + name: libvirtd + state: restarted + become: yes + \ No newline at end of file diff --git a/roles/vm/tasks/main.yml b/roles/vm/tasks/main.yml new file mode 100644 index 0000000..ee07123 --- /dev/null +++ b/roles/vm/tasks/main.yml @@ -0,0 +1,68 @@ +--- + +- name: Install vm deps + apt: + name: + - libvirt-daemon-system + - libvirt-clients + - qemu-kvm + - qemu-utils + - virt-manager + - ovmf + become: yes + +- name: Update grub for amd_iommu + lineinfile: + path: /etc/default/grub + state: present + regexp: '^GRUB_CMDLINE_LINUX_DEFAULT=' + line: 'GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd_iommu=on"' + become: yes + +- name: Create subdirectories + file: + dest: '{{item}}' + mode: '0755' + owner: root + group: root + state: directory + with_items: + - /etc/libvirt/hooks/ + - /etc/libvirt/hooks/qemu.d/win10/prepare/begin/ + - /etc/libvirt/hooks/qemu.d/win10/release/end/ + become: yes + +- name: Fetch libvirt qemu hook + get_url: + url: https://raw.githubusercontent.com/PassthroughPOST/VFIO-Tools/master/libvirt_hooks/qemu + dest: /etc/libvirt/hooks/qemu + mode: 0744 + become: yes + notify: restart libvirtd + +- name: Create kvm.conf + template: + src: kvm.conf.j2 + dest: /etc/libvirt/hooks/kvm.conf + owner: root + group: root + mode: '0644' + become: yes + +- name: bind_vfio.sh + template: + src: bind_vfio.sh.j2 + dest: /etc/libvirt/hooks/qemu.d/win10/prepare/begin/bind_vfio.sh + owner: root + group: root + mode: '0744' + become: yes + +- name: unbind_vfio.sh + template: + src: unbind_vfio.sh.j2 + dest: /etc/libvirt/hooks/qemu.d/win10/release/end/unbind_vfio.sh + owner: root + group: root + mode: '0744' + become: yes diff --git a/roles/vm/templates/bind_vfio.sh.j2 b/roles/vm/templates/bind_vfio.sh.j2 new file mode 100644 index 0000000..7635c36 --- /dev/null +++ b/roles/vm/templates/bind_vfio.sh.j2 @@ -0,0 +1,13 @@ +#!/bin/bash + +## Load the config file +source "/etc/libvirt/hooks/kvm.conf" + +## Load vfio +modprobe vfio +modprobe vfio_iommu_type1 +modprobe vfio_pci + +## Unbind gpu from nvidia and bind to vfio +virsh nodedev-detach $VIRSH_GPU_VIDEO +virsh nodedev-detach $VIRSH_GPU_AUDIO diff --git a/roles/vm/templates/kvm.conf.j2 b/roles/vm/templates/kvm.conf.j2 new file mode 100644 index 0000000..12bbc65 --- /dev/null +++ b/roles/vm/templates/kvm.conf.j2 @@ -0,0 +1,3 @@ +## Virsh devices +VIRSH_GPU_VIDEO=pci_0000_0c_00_0 +VIRSH_GPU_AUDIO=pci_0000_0c_00_1 diff --git a/roles/vm/templates/unbind_vfio.sh.j2 b/roles/vm/templates/unbind_vfio.sh.j2 new file mode 100644 index 0000000..00a7896 --- /dev/null +++ b/roles/vm/templates/unbind_vfio.sh.j2 @@ -0,0 +1,13 @@ +#!/bin/bash + +## Load the config file +source "/etc/libvirt/hooks/kvm.conf" + +## Unbind gpu from vfio and bind to nvidia +virsh nodedev-reattach $VIRSH_GPU_VIDEO +virsh nodedev-reattach $VIRSH_GPU_AUDIO + +## Unload vfio +modprobe -r vfio_pci +modprobe -r vfio_iommu_type1 +modprobe -r vfio \ No newline at end of file diff --git a/tasks.sh b/tasks.sh new file mode 100644 index 0000000..183bbf4 --- /dev/null +++ b/tasks.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# add a check for .files + +./.files/install --config ~/.files/install.conf.yaml + +sudo pip3 install ansible + +# Patch ansible/modules/net_tools/nmcli.py https://raw.githubusercontent.com/torvitas/ansible/4945040510ff0c38e03ae0e06dec0909418d3dc4/lib/ansible/modules/net_tools/nmcli.py + +sudo mdadm --stop /dev/md127 +sudo mdadm --assemble /dev/md0 --name=kudos --update=name /dev/sd[bcdef] +sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf +# write mdadm stuff to initramfs +sudo update-initramfs -u -k all + +sudo ansible-playbook -i hosts kudos.yml + + + +> sudo add-apt-repository ppa:appimagelauncher-team/stable +> sudo apt update +> sudo apt install appimagelauncher + +https://plexamp.plex.tv/plexamp.plex.tv/desktop/Plexamp-3.0.1.AppImage + +alsamixer for low steelseries audio volume + +# Add key to keychain +SSH_ASKPASS=/usr/libexec/seahorse/ssh-askpass ssh-add id_rsa