From e2f2dbfec8b6f679dc581b1e6cdafb75fa314b4e Mon Sep 17 00:00:00 2001 From: Michele Cereda Date: Sun, 24 Apr 2022 15:27:15 +0200 Subject: [PATCH] Added keybase vagrant box and updated the docs --- knowledge base/vagrant.md | 100 +++++++++++++++++++------------ vagrant/keybase/Vagrantfile | 34 +++++++++++ vagrant/xfce4-latest/Vagrantfile | 9 ++- 3 files changed, 101 insertions(+), 42 deletions(-) create mode 100644 vagrant/keybase/Vagrantfile diff --git a/knowledge base/vagrant.md b/knowledge base/vagrant.md index 8e8a046..c95ab06 100644 --- a/knowledge base/vagrant.md +++ b/knowledge base/vagrant.md @@ -9,6 +9,7 @@ vagrant up # connect to the box vagrant ssh + # print the ssh config snippet to connect to the box vagrant ssh-config @@ -43,43 +44,38 @@ vagrant plugin install vagrant-disksize ## Usage -1. install using your package manager -1. create a box: +> All commands need to be run from the box's folder. + +1. Install Vagrant. +1. Optionally, create a folder to keep all files in order and move into it: ```shell - [home]$ mkdir -p "~/vagrant/archlinux" - [home]$ cd "${_}" - [archlinux]$ vagrant init archlinux/archlinux + mkdir test-box + cd $_ ``` -1. start the box: +1. Create a configuration: ```shell - [archlinux]$ vagrant up - - # re-run provisioning - [archlinux]$ vagrant up --provision + vagrant init archlinux/archlinux ``` - -1. connect to the machine: + +1. Start the box: ```shell - [archlinux]$ vagrant ssh + vagrant up + + # re-provision the box after startup + vagrant up --provision ``` -## Install autocomplete +1. Connect to the machine: -```shell -$ vagrant autocomplete install --bash -Autocomplete installed at paths: -- /home/user/.bashrc + ```shell + vagrant ssh + ``` -$ vagrant autocomplete install --zsh -Autocomplete installed at paths: -- /home/user/.zshrc -``` - -## Boxes management +### Boxes management ```shell vagrant box add archlinux/archlinux @@ -91,16 +87,40 @@ vagrant box update vagrant box update --box generic/gentoo ``` -## Customize VM settings +## Install shell's autocomplete + +```shell +$ vagrant autocomplete install --bash +Autocomplete installed at paths: +- /home/user/.bashrc + +$ vagrant autocomplete install --zsh +Autocomplete installed at paths: +- /home/user/.zshrc +``` + +## Customize a box ```ruby Vagrant.configure("2") do |config| config.vm.box = "archlinux/archlinux" config.vm.provider "virtualbox" do |vb| - vb.memory = "3072" + # Vagrant can call any VBoxManage command prior to booting the machine. + # Multiple customize directives will be executed in order. vb.customize ["modifyvm", :id, "--vram", "64"] vb.customize ["modifyvm", :id, "--graphicscontroller", "vmsvga"] + vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"] + + # Some settings have convenience shortcuts. + vb.name = "xfce4 latest" + vb.cpus = 2 + vb.memory = "2048" + vb.default_nic_type = "82543GC" + vb.gui = true + + # Skip the guest additions check. + vb.check_guest_additions = false end ``` @@ -110,15 +130,16 @@ Add the variables as argument of the `config.vm.provision` key: ```ruby Vagrant.configure("2") do |config| - config.vm.provision "shell", env: { "KEYBASE_USERNAME" => ENV['KEYBASE_USERNAME'], "KEYBASE_PAPERKEY" => ENV['KEYBASE_PAPERKEY'] }, inline: <<-SHELL - pacman -Sy --noconfirm --noprogressbar \ - fzf zsh-completions \ - keybase - pacman -Scc --noconfirm - chsh --shell /bin/zsh vagrant - sudo --user vagrant --preserve-env=KEYBASE_USERNAME,KEYBASE_PAPERKEY keybase oneshot - sudo --user vagrant --preserve-env=KEYBASE_USERNAME,KEYBASE_PAPERKEY keybase git list - SHELL + config.vm.provision :shell do |shell| + shell.env = { + "STATIC" => "set-in-config", + "FORWARDED" => ENV['HOST_VAR'], + } + shell.inline = <<-SHELL + printenv STATIC FORWARDED + sudo -u vagrant --preserve-env=STATIC,FORWARDED printenv STATIC FORWARDED + SHELL + end end ``` @@ -138,12 +159,17 @@ vagrant.configure('2') do |config| end ``` -## Reboot after provision +## Reboot after provisioning -Add this to the Vagrantfile: +Add one of the following to the box's Vagrantfile: ```ruby config.vm.provision "shell", reboot: true + +config.vm.provision :shell do |shell| + shell.privileged = true + shell.reboot = true +end ``` ## Further readings diff --git a/vagrant/keybase/Vagrantfile b/vagrant/keybase/Vagrantfile new file mode 100644 index 0000000..ce92df1 --- /dev/null +++ b/vagrant/keybase/Vagrantfile @@ -0,0 +1,34 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# Sources: +# - https://book.keybase.io/guides/linux + +Vagrant.configure("2") do |config| + config.vm.box = "fedora/35-cloud-base" + + config.vm.provider "virtualbox" do |vb| + vb.name = "keybase" + vb.cpus = 1 + vb.memory = "1024" + vb.customize ["modifyvm", :id, "--vram", "64"] + vb.customize ["modifyvm", :id, "--graphicscontroller", "vmsvga"] + end + + config.vm.provision :shell do |shell| + shell.env = { + "KEYBASE_ALLOW_ROOT" => 1, + "KEYBASE_DEVICENAME" => ENV['KEYBASE_DEVICENAME'], + "KEYBASE_NO_KBFS" => 0, + "KEYBASE_NO_GUI" => 1, + "KEYBASE_PAPERKEY" => ENV['KEYBASE_PAPERKEY'], + "KEYBASE_USERNAME" => ENV['KEYBASE_USERNAME'], + } + shell.inline = <<-SHELL + dnf install --assumeyes https://prerelease.keybase.io/keybase_amd64.rpm + + keybase oneshot + keybase git list + SHELL + end +end diff --git a/vagrant/xfce4-latest/Vagrantfile b/vagrant/xfce4-latest/Vagrantfile index 2873322..e56a7f4 100644 --- a/vagrant/xfce4-latest/Vagrantfile +++ b/vagrant/xfce4-latest/Vagrantfile @@ -6,23 +6,22 @@ Vagrant.configure("2") do |config| config.vm.provider "virtualbox" do |vb| vb.name = "xfce4 latest" - vb.memory = "3072" + vb.cpus = 1 + vb.memory = "2048" vb.gui = true vb.customize ["modifyvm", :id, "--vram", "64"] vb.customize ["modifyvm", :id, "--graphicscontroller", "vmsvga"] - vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"] end config.vm.provision "shell", inline: <<-SHELL pacman --noconfirm \ --remove --nosave --recursive --unneeded \ virtualbox-guest-utils-nox + pacman --noconfirm \ --sync --needed --noprogressbar --quiet --refresh \ virtualbox-guest-utils SHELL config.vm.provision "shell", path: "../../scripts/archlinux/xfce4.install.sh" - config.vm.provision "shell", inline: <<-SHELL - shutdown -r now - SHELL + config.vm.provision "shell", reboot: true end