Last active
February 11, 2025 03:50
-
-
Save defanator/c42bae01d99557900ecccf1a45942008 to your computer and use it in GitHub Desktop.
Vagrantfile with a number of useful dev environments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- mode: ruby -*- | |
# vi: set ft=ruby : | |
# https://github.com/dotless-de/vagrant-vbguest/issues/367 | |
# https://github.com/dotless-de/vagrant-vbguest/pull/373 | |
if defined?(VagrantVbguest) | |
class MyWorkaroundInstallerUntilPR373IsMerged < VagrantVbguest::Installers::CentOS | |
protected | |
def has_rel_repo? | |
unless instance_variable_defined?(:@has_rel_repo) | |
rel = release_version | |
@has_rel_repo = communicate.test(centos_8? ? 'yum repolist' : "yum repolist --enablerepo=C#{rel}-base --enablerepo=C#{rel}-updates") | |
end | |
@has_rel_repo | |
end | |
def centos_8? | |
release_version && release_version.to_s.start_with?('8') | |
end | |
def install_kernel_devel(opts=nil, &block) | |
if centos_8? | |
communicate.sudo('yum update -y kernel', opts, &block) | |
communicate.sudo('yum install -y kernel-devel', opts, &block) | |
communicate.sudo('shutdown -r now', opts, &block) | |
begin | |
sleep 10 | |
end until @vm.communicate.ready? | |
else | |
rel = has_rel_repo? ? release_version : '*' | |
cmd = "yum install -y kernel-devel-`uname -r` --enablerepo=C#{rel}-base --enablerepo=C#{rel}-updates" | |
communicate.sudo(cmd, opts, &block) | |
end | |
end | |
end | |
end | |
Vagrant.configure("2") do |config| | |
mem = 1024 | |
cpus = [2, `getconf _NPROCESSORS_ONLN`.to_i / 2].max | |
host = RbConfig::CONFIG['host_os'] | |
if host =~ /darwin/ | |
mem = [2048, `sysctl -n hw.memsize`.to_i / 1024 / 1024 / 2].max | |
elsif host =~ /linux/ | |
mem = [cpus * 512, `awk '/MemTotal/ {print $2}' /proc/meminfo`.to_i / 1024 / 2].min | |
end | |
config.vm.provider "virtualbox" do |vbox, override| | |
vbox.cpus = cpus | |
vbox.memory = mem | |
end | |
config.vm.provider :libvirt do |libvirt, override| | |
libvirt.cpus = cpus | |
libvirt.memory = mem | |
libvirt.driver = "kvm" | |
libvirt.cpu_mode = "host-passthrough" | |
end | |
config.ssh.forward_agent = true | |
config.vm.provision "shell", | |
inline: "printf '[ui]\nusername = Andrei Belov <[email protected]>\n\n[extensions]\nmq =\n' > $HOME/.hgrc", privileged: false | |
config.vm.define "centos7", autostart: false do |centos7| | |
centos7.vm.box = "centos/7" | |
centos7.vm.provision "shell", | |
inline: "yum -y install epel-release mercurial" | |
end | |
config.vm.define "centos8", autostart: false do |centos8| | |
centos8.vm.box = "centos/8" | |
centos8.vm.network "private_network", type: "dhcp" | |
centos8.vm.provision "shell", | |
inline: "yum -y install epel-release mercurial nfs-utils rpm-build expect createrepo python2-pytest python3-pytest python2-yaml python3-yaml" | |
centos8.vm.synced_folder "/Users/defan", "/vagrant", type: "nfs" | |
if defined?(MyWorkaroundInstallerUntilPR373IsMerged) | |
centos8.vbguest.installer = MyWorkaroundInstallerUntilPR373IsMerged | |
end | |
end | |
config.vm.define "fedora41", autostart: false do |fedora41| | |
fedora41.vm.box = "fedora/41-cloud-base" | |
fedora41.vm.network "private_network", type: "dhcp" | |
fedora41.vm.provision "shell", | |
inline: "dnf -y install mercurial nfs-utils python3-pytest reprepro rpm-build dpkg dpkg-dev expect createrepo libxslt-devel wget openssl openssl-devel pcre-devel geoip-devel gd-devel libedit-devel libmaxminddb-devel git cmake libstdc++-static yaml-cpp-devel rubygem-rake libcurl-devel yajl-devel rpmlint" | |
#fedora41.vm.synced_folder "/Users/defan", "/vagrant", type: "nfs" | |
fedora41.vm.synced_folder "/Users/defan", "/vagrant" | |
end | |
config.vm.define "opensuse_leap", autostart: false do |opensuse_leap| | |
opensuse_leap.vm.box = "opensuse/openSUSE-42.3-x86_64" | |
end | |
config.vm.define "opensuse_tumbleweed", autostart: false do |opensuse_tumbleweed| | |
opensuse_tumbleweed.vm.box = "opensuse/openSUSE-Tumbleweed-x86_64" | |
end | |
config.vm.define "debian10", autostart: false do |debian10| | |
#debian10.vm.box = "debian/buster64" | |
debian10.vm.box = "generic/debian10" | |
debian10.vm.synced_folder "/Users/defan", "/vagrant" | |
end | |
config.vm.define "debian11", autostart: false do |debian11| | |
#debian11.vm.box = "debian/bullseye64" | |
debian11.vm.box = "generic/debian11" | |
debian11.vm.synced_folder "/Users/defan", "/vagrant" | |
end | |
config.vm.define "debian12", autostart: false do |debian12| | |
debian12.vm.box = "generic/debian12" | |
debian12.vm.synced_folder "/Users/defan", "/vagrant" | |
end | |
config.vm.define "ubuntu2004", autostart: false do |ubuntu2004| | |
ubuntu2004.vm.box = "generic/ubuntu2004" | |
ubuntu2004.vm.network "private_network", type: "dhcp" | |
#ubuntu2004.vm.provision "shell", | |
# inline: "apt-get install -y mercurial debhelper devscripts python-pytest python3-pytest python3-rpm python3-dev expect dh-systemd python3-requests python3-requests-mock python3-mock python3-freezegun libxml2-utils xsltproc quilt libssl-dev libpcre3-dev libbrotli-dev libgeoip-dev libmaxminddb-dev libgd-dev libedit-dev cmake libyaml-cpp-dev libperl-dev libxslt1-dev libpcre2-dev php-dev libphp-embed python2.7-dev golang ruby-dev ruby-rack openjdk-11-jdk-headless openjdk-11-jre-headless libkrb5-dev libboost-dev" | |
ubuntu2004.vm.synced_folder "/Users/defan", "/vagrant" | |
end | |
config.vm.define "ubuntu2204", autostart: false do |ubuntu2204| | |
ubuntu2204.vm.box = "generic/ubuntu2204" | |
ubuntu2204.vm.network "private_network", type: "dhcp" | |
#ubuntu2204.vm.provision "shell", | |
# inline: "apt-get install -y mercurial debhelper devscripts python3-pytest python3-rpm python3-dev expect python3-requests python3-requests-mock python3-mock python3-freezegun libxml2-utils xsltproc quilt libssl-dev libpcre3-dev libbrotli-dev libgeoip-dev libmaxminddb-dev libgd-dev libedit-dev cmake libyaml-cpp-dev libperl-dev libxslt1-dev libpcre2-dev php-dev libphp-embed python2.7-dev golang ruby-dev ruby-rack openjdk-11-jdk-headless openjdk-11-jre-headless libkrb5-dev libboost-dev" | |
ubuntu2204.vm.synced_folder "/Users/defan", "/vagrant" | |
ubuntu2204.vm.provider "virtualbox" do |vbox, override| | |
vbox.cpus = 4 | |
end | |
end | |
# config.vm.define "ubuntu2404", autostart: false do |ubuntu2404| | |
# ubuntu2404.vm.box = "generic/ubuntu2404" | |
# ubuntu2404.vm.network "private_network", type: "dhcp" | |
# ubuntu2404.vm.synced_folder "/Users/defan", "/vagrant" | |
# end | |
config.vm.define "alpine317", autostart: false do |alpine317| | |
alpine317.vm.box = "generic/alpine317" | |
alpine317.vm.network "private_network", type: "dhcp" | |
alpine317.vm.provision "shell", | |
inline: "modprobe isofs && apk update && apk add virtualbox-guest-additions rsync abuild git make gcc g++ zlib-dev openssl-dev pcre-dev curl-dev tar linux-pam-dev musl-dev linux-headers coreutils brotli-dev libmaxminddb-dev xz patchelf readline-dev yajl-dev libxml2-dev libxslt-dev perl-dev ruby-dev ruby-rake ruby-etc yaml-cpp-dev cmake gd-dev geoip-dev mercurial krb5-dev" | |
alpine317.vm.synced_folder "/Users/defan", "/vagrant" | |
end | |
config.vm.define "freebsd13", autostart: false do |freebsd13| | |
freebsd13.vm.guest = :freebsd | |
freebsd13.vm.box = "freebsd/FreeBSD-13.3-RELEASE" | |
freebsd13.vm.network "private_network", type: "dhcp" | |
freebsd13.vm.synced_folder "/Users/defan", "/vagrant" | |
freebsd13.vm.boot_timeout = 600 | |
freebsd13.ssh.shell = "sh" | |
end | |
config.vm.define "freebsd14", autostart: false do |freebsd14| | |
freebsd14.vm.guest = :freebsd | |
freebsd14.vm.box = "freebsd/FreeBSD-14.1-RELEASE" | |
freebsd14.vm.network "private_network", type: "dhcp" | |
freebsd14.vm.synced_folder "/Users/defan", "/vagrant" | |
freebsd14.vm.boot_timeout = 600 | |
freebsd14.ssh.shell = "sh" | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment