{"id":19704930,"url":"https://github.com/fspv/ansible-playbooks","last_synced_at":"2026-08-18T02:30:18.986Z","repository":{"id":144122830,"uuid":"112916660","full_name":"fspv/ansible-playbooks","owner":"fspv","description":"My ansible playbooks to configure localhost and personal servers","archived":false,"fork":false,"pushed_at":"2026-08-16T14:11:36.000Z","size":590,"stargazers_count":4,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-08-16T16:09:00.411Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fspv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","claude":"CLAUDE.md","gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2017-12-03T09:50:46.000Z","updated_at":"2026-08-16T14:12:28.000Z","dependencies_parsed_at":"2026-08-16T16:11:40.976Z","dependency_job_id":null,"html_url":"https://github.com/fspv/ansible-playbooks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fspv/ansible-playbooks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fspv%2Fansible-playbooks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fspv%2Fansible-playbooks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fspv%2Fansible-playbooks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fspv%2Fansible-playbooks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fspv","download_url":"https://codeload.github.com/fspv/ansible-playbooks/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fspv%2Fansible-playbooks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36754168,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-08-06T04:43:03.162Z","status":"online","status_checked_at":"2026-08-18T02:00:06.197Z","response_time":52,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T21:25:18.416Z","updated_at":"2026-08-18T02:30:18.979Z","avatar_url":"https://github.com/fspv.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"Clone\n=====\n\n```\ngit clone https://github.com/fspv/ansible-playbooks.git\ncd ansible-playbooks\ngit submodule update --init --recursive\n```\n\nExamples\n========\n\nApply local configuraiton changes\n\n```\n./bootstrap.sh common-devserver.yml LOCAL\n```\n\nApply upstream config\n```\n./bootstrap.sh common-devserver.yml REMOTE\n```\n\nDry run\n```\n./check.sh common-devserver.yml LOCAL\n```\n\nPlaybooks\n=========\n\n# Setup Yubikey\n\nUI: `nix-shell -p yubikey-manager-qt --run ykman-gui`\nUI2: `nix-shell -p yubikey-personalization-gui --run yubikey-personalization-gui`\n\n```bash\n#!/bin/sh\n\nmkdir -p ~/.config/Yubico\npamu2fcfg \u003e ~/.config/Yubico/u2f_keys\necho \u003e\u003e ~/.config/Yubico/u2f_keys\n\n\nU2F_KEYS=/etc/Yubico/u2f_keys\n\nsudo mkdir -p /etc/Yubico\nsudo touch \"${U2F_KEYS}\"\ntest -f ~/.config/Yubico/u2f_keys \u0026\u0026 cat ~/.config/Yubico/u2f_keys | sudo tee -a $U2F_KEYS\n\nrm -rf ~/.config/Yubico\n\nif grep -q pam_u2f.so /etc/pam.d/common-auth;\nthen\n    true\nelse\n    echo \"auth    required            pam_u2f.so nouserok authfile=${U2F_KEYS} cue\" | sudo tee -a /etc/pam.d/common-auth\nfi\n```\n\nThen merge entries for a single user into one line, for example\n```\n\u003cusername\u003e:\u003cKeyHandle1\u003e,\u003cUserKey1\u003e,\u003cCoseType1\u003e,\u003cOptions1\u003e:\u003cKeyHandle2\u003e,\u003cUserKey2\u003e,\u003cCoseType2\u003e,\u003cOptions2\u003e:\u003cKeyHandle3\u003e,\u003cUserKey3\u003e,\u003cCoseType3\u003e,\u003cOptions3\u003e\n```\n\nIf the key doesn't work in chromium, try replugging it.\n\n# Setup server auth by pubkey and password\n\nhttps://developers.yubico.com/SSH/Securing_SSH_with_FIDO2.html\n\n```\nPermitRootLogin no\nPermitEmptyPasswords no\nPasswordAuthentication yes\nPubkeyAuthentication yes\nAuthenticationMethods publickey,password\n```\n\n3. `systemctl restart sshd`\n\n# Wayland tips and tricks\n\nTo enable screen capture in chromium set the following flags:\n\nchrome://flags/#enable-webrtc-pipewire-camera -\u003e Enabled\nchrome://flags/#ozone-platform-hint -\u003e Wayland\n\nPrepare for the new ubuntu release\n==================================\n\n1. Create ponysay backport https://github.com/fspv/ponysay-deb\n2. Test all vagrant scenarios locally\n3. Test if nix builds\n4. wayland apps can't be tested in vagrant, so test them locally if possible\n\nUpdate grub from a Live CD\n==========================\nA valid strategy to avoid formatting the entire disk is to install ubuntu on a flash drive and just copy files into the old root partition.\n\nAfter that you can do something like this to make it bootable again:\n\n```sh\nsudo cryptsetup luksOpen /dev/nvme0n1p3 test\nsudo mount /dev/disk/by-id/dm-name-vgubuntu-root /mnt\nsudo mount /dev/disk/by-id/dm-name-vgubuntu-home /mnt/home\nsudo mount /dev/nvme0n1p2 /mnt/boot\nsudo mount /dev/nvme0n1p1 /mnt/boot/efi\nsudo mount --bind /dev /mnt/dev\nsudo mount --bind /sys /mnt/sys\nsudo mount --bind /proc /mnt/proc\nsudo chroot /mnt\n```\n\nThen you can copy old `/etc/fstab` and `/etc/crypttab` to the new system. When you format partition, its uuid changes, so you need to update `/etc/crypttab` and `/etc/fstab`.\n\nFinally, you can update grub with\n```sh\nupdate-initramfs -k all -u\nupdate-grub\ngrub-install /dev/nvme0n1\n```\n\nIf everything is done correctly, the system should boot again.\n\nDebug initramfs\n===============\n\nhttps://wiki.debian.org/InitramfsDebug\n\n1. Try add `break` to the kernel command line\n2. Inspect initrd image contents with `lsinitramfs /boot/initrd.img`\n3. You can unpack initramfs image with `unmkinitramfs /boot/initrd.img /tmp/initrd`\n4. Try to explore differences between working and non-working initramfs images with `diffoscope --exclude-directory-metadata=yes /tmp/initrd1 /tmp/initrd2` (can be installed with `nix-shell -p diffoscope`)\n\nRecent initramfs bugs can be found here https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bugs?orderby=-id\u0026start=0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffspv%2Fansible-playbooks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffspv%2Fansible-playbooks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffspv%2Fansible-playbooks/lists"}